Closed MyrTheMoth closed 5 years ago
Hello @DragonFlayer!
Thanks for your post, unfortunately now I don't have any tools to debug. Problems with automatic suspension are from long time and unfortunately I don't have much time lately to debug this problem because this isn't bug that can be quickly solved.
Interesting is that you noticed problems with pinned tabs and tabs which playing sound.
I think there is need to write some tests of C code. I will fix that fast as I can because this is very important bug.
Thanks for your support! Michalewicz Piotr
Yeah, on pinned messages, it happens more often on sites that update frequently while the tab is not focused, such as YouTube or Google Drive
Here it is the same - it seems to happen more often, if you load a site and switch to another tab during loading. I could switch between the two tabs and every time it was suspended - suspend time was configured to 600.
Hello!
Today i was released new version of extension (3.4.6). Many parts of code have been rewritten, also those related with automatic suspension. I'm still testing but in my opinion extension works better.
It will be helpful if you guys told me whether you have still problems.
Best regards, Michalewicz Piotr
At the moment it seems the tabs are not suspended. Maybe it is useful to know that I often use the suspend mode of my computer. Maybe there is an overflow?
Hmm, I couldn't find the part of code where the event-handler and timer is for suspending etc. It seems to me that there are handler in case of opening/closing/updating tabs. Where is the part which querys the time and where is it compared? Is it translated from C to JS or the other way around?
Hello,
Yesterday I released new version (3.5.1). I hope problems with automatic suspending were solved for good. I will close this issue for now, if you will still have problems please write comment here then I will reopen issue.
@SIRprise Code isn't translated from C to JS. There are something like two separated environments which are communicating with each other. Take a look at diagram in readme. JS calls C's events (whole C code is event driven). C is putting events in the queue and run every event one by one.
In context of discarding: 1) C calls jsExpiredTabsWatcher via JavaScriptProviderService (javascript_provider_service.c).
2) jsExpiredTabsWatcher is nothing more than interval that if can push event then is pushing discard event to C.
3) Then C runs discardTabs() function (events_service.c), this function check if there is any tab to suspend. If there tabs to suspend then calls jsChromeTabsDiscard via JavaScriptProviderService.
4) chromeTabsDiscard from library.js handles rest of things related with suspending like decolorizing of favicons.
It is a bit complicated, but with this approach tabs watcher doesn't block C code.
Best regards, Michalewicz Piotr
Firefox 67.0.1 (64-bit) Firefox Tab Suspender 3.4.4
Expected Behavior:
Current Behavior:
I'd be happy to help debug this case, are there any logs or metrics I can pull for your review?