Closed Tarnyko closed 10 years ago
@Tarnyko Did you check if events for a minimized window are even dispatched ? or are they ignored later in the chain ?
@kalyankondapally No, they are not. They go as far as Dispatch(), but nothing happens after that.
At the compositor level, (ui/compositor/compositor.cc) ScheduleDraw() calls are not issued anymore. I am trying to go this way, because my attempts to find where is sleeps/fireezes were unsucessful ; I am mostly clueless about what really happens, though.
The wayland part of the GPU process Wayland_DisplayRun()) is still iterating and dispatching things, so my wild guess is that the browser process considers the minimized window should not process any events anymore. Which is clearly wrong.
@Tarnyko K. One thing to check would be if we are setting the right state in DesktopRootWindowHost after the window gets restored.
@joone As you have Tizen env, can you help @Tarnyko debug this issue.
When a window has been minimized, it freezes, and will eventually be killed by the GPU watchdog (unless the user re-focuses it manually with Win+Tab). Here are technical details :
"ozone/ui/events/remote_event_dispatcher.cc" contains a "Dispatch()" function responsible for relaying events :
Dispatch(new WaylandInput_PointerEnter(handle, x, y));
which translates to :
dispatcher->sender->Send (IPC::Message* message); loop->message_loop_proxy()->PostTask(FROM_HERE, task);
so a mouse pointer event, for instance, is posted on the main loop, and finally catched in "ozone/ui/events/event_converter_ozone_wayland.cc"
On a minimized window, only one event is processed, after which the PostTask() function has no effect and no IPC message are sent anymore. Manually iterating though windows with Win+Tab seems to "resume" the loop and fix the problem.