I have instrumented oxide, and I’m seeing the following: Start playback of video, two instances of PowerSaveBlocker (one for video, one for audio) are created and request a lock:
[1015/201111:INFO:oxide_power_save_blocker.cc(260)] PowerSaveBlocker::PowerSaveBlocker() 0xb8d11938 : Playing video [1015/201111:INFO:oxide_power_save_blocker.cc(88)] PowerSaveBlocker::Init() 0xb8d11938 : -1 [1015/201111:INFO:oxide_power_save_blocker.cc(107)] PowerSaveBlocker::ApplyBlock() 0xb8d11938 : -1 [1015/201111:INFO:oxide_power_save_blocker.cc(157)] PowerSaveBlocker::ApplyBlockUnityScreenService() 0xb8d11938 : 3 [1015/201111:INFO:oxide_power_save_blocker.cc(260)] PowerSaveBlocker::PowerSaveBlocker() 0xb8a15ad0 : Playing audio [1015/201111:INFO:oxide_power_save_blocker.cc(88)] PowerSaveBlocker::Init() 0xb8a15ad0 : -1 [1015/201111:INFO:oxide_power_save_blocker.cc(107)] PowerSaveBlocker::ApplyBlock() 0xb8a15ad0 : -1 [1015/201111:INFO:oxide_power_save_blocker.cc(157)] PowerSaveBlocker::ApplyBlockUnityScreenService() 0xb8a15ad0 : 4 Press power button, the two PowerSaveBlocker instances correctly release their locks, as expected: [1015/201117:INFO:oxide_power_save_blocker.cc(99)] PowerSaveBlocker::CleanUp() 0xb8d11938 : 3 [1015/201117:INFO:oxide_power_save_blocker.cc(99)] PowerSaveBlocker::CleanUp() 0xb8a15ad0 : 4 [1015/201117:INFO:oxide_power_save_blocker.cc(119)] PowerSaveBlocker::RemoveBlock() 0xb8d11938 : 3 [1015/201117:INFO:oxide_power_save_blocker.cc(119)] PowerSaveBlocker::RemoveBlock() 0xb8a15ad0 : 4 Press power button again to wake screen, unlock screen, playback resumes but Init() appears to be called twice on each instance: [1015/201130:INFO:oxide_power_save_blocker.cc(88)] PowerSaveBlocker::Init() 0xb8d11938 : -1 [1015/201130:INFO:oxide_power_save_blocker.cc(88)] PowerSaveBlocker::Init() 0xb8a15ad0 : -1 [1015/201130:INFO:oxide_power_save_blocker.cc(107)] PowerSaveBlocker::ApplyBlock() 0xb8d11938 : -1 [1015/201130:INFO:oxide_power_save_blocker.cc(88)] PowerSaveBlocker::Init() 0xb8d11938 : -1 [1015/201130:INFO:oxide_power_save_blocker.cc(88)] PowerSaveBlocker::Init() 0xb8a15ad0 : -1 [1015/201130:INFO:oxide_power_save_blocker.cc(157)] PowerSaveBlocker::ApplyBlockUnityScreenService() 0xb8d11938 : 5 [1015/201130:INFO:oxide_power_save_blocker.cc(107)] PowerSaveBlocker::ApplyBlock() 0xb8a15ad0 : -1 [1015/201131:INFO:oxide_power_save_blocker.cc(157)] PowerSaveBlocker::ApplyBlockUnityScreenService() 0xb8a15ad0 : 6 [1015/201131:INFO:oxide_power_save_blocker.cc(107)] PowerSaveBlocker::ApplyBlock() 0xb8d11938 : 5 [1015/201131:INFO:oxide_power_save_blocker.cc(157)] PowerSaveBlocker::ApplyBlockUnityScreenService() 0xb8d11938 : 7 [1015/201131:INFO:oxide_power_save_blocker.cc(107)] PowerSaveBlocker::ApplyBlock() 0xb8a15ad0 : 6 [1015/201131:INFO:oxide_power_save_blocker.cc(157)] PowerSaveBlocker::ApplyBlockUnityScreenService() 0xb8a15ad0 : 8 I’m suspecting that Init() is called once by chromium itself when it resumes the paused playback, and a second time in the meantime by the code that handles application state changes, when oxide detects that the application got focused. This is a bug in oxide: a call to Init() should bail out if another Init() has already been requested, to avoid two concurrent lock requests. ** Also affects: oxide Importance: Undecided Status: New ** Changed in: oxide Assignee: (unassigned) => Olivier Tilloy (osomon) ** Changed in: oxide Importance: Undecided => Critical ** Changed in: oxide Status: New => Confirmed ** Changed in: webbrowser-app (Ubuntu) Status: New => Invalid -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to unity-system-compositor in Ubuntu. https://bugs.launchpad.net/bugs/1502145 Title: Apps can keep screen lit permanently Status in Canonical System Image: Confirmed Status in Oxide: Confirmed Status in qtmir package in Ubuntu: New Status in unity-system-compositor package in Ubuntu: Confirmed Status in unity8 package in Ubuntu: New Status in webbrowser-app package in Ubuntu: Invalid Bug description: rc-proposed, r140, krillin There are times when it seems the display blanking policy stops working and the display stays on until I press the power button. Steps to reproduce: * install and start Siete * put it in background Expected outcome: * the display is switched off after a predetermined amount of time Actual outcome: * the display stays on forever ====== Now that apps can request the screen to stay on, they can do so regardless of whether they're focused/visible or not. To manage notifications about this bug go to: https://bugs.launchpad.net/canonical-devices-system-image/+bug/1502145/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp