how to handling panel and popup windows in fullscreen support?

Juan Zhao juan.j.zhao at linux.intel.com
Fri Feb 10 01:05:06 PST 2012


  Hi krh,
     We thinked over how to handling panel and popup windows in 
fullscreen support. Just would like to get your suggestion and decision 
here.

   These three pictures demostrate fullscreen cases we need to implement:
   fullscreen window on the top: The panels will be hidden
   
https://gitorious.org/dataforuse/dataforuse/blobs/master/fullscreen.png 
<https://gitorious.org/dataforuse/dataforuse/blobs/master/fullscreen.png>

   un-fullscreen window over fullscreen window: The panels will be shown
   https://gitorious.org/dataforuse/dataforuse/blobs/master/nFoverF.png 
<https://gitorious.org/dataforuse/dataforuse/blobs/master/nFoverF.png>

   Popup window over fullscreen window: panels will be hidden
   https://gitorious.org/dataforuse/dataforuse/blobs/master/PoverF.png 
<https://gitorious.org/dataforuse/dataforuse/blobs/master/PoverF.png>

   To handling panels, we are thinking about three methods:
   1. surface grouping in struct weston_compositor
       We can split the surface list to different surface type lists, 
for example weston_compositor::panel_surfaces, 
weston_compositor::cursor_surfaces. If using this method, lots of things 
should be changed.

   2. add weston_surface::type to differentiate the types.
    we still use that west_compositor::surface_list, we can add type 
member in struct weston_surface, and initialise them when they are 
created. (In our previous fullscreen patches, we use this method as a 
workaround)

  3. handle surface type management in shell side(shell.c).
     keep one weston_surface list in struct weston_compositor(The 
current solution). Add the modification in shell.c:
     Add one wl_shell::hidden_panels, when we would like to hide the 
panel surfaces, just move them from compositor->surface_list to this 
hidden_panels. And when we would like to unhide them, just move it back 
to the compositor->surface_list. It's similar to what happened on 
wl_shell::hidden_surface_list when locking/unlocking.

For these three methods, which method do you prefer? Or any other ideas?

Thanks,
Juan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20120210/6bed0f9a/attachment.htm>


More information about the wayland-devel mailing list