[PATCH v2 1/4] shell: add fullscreen path for activate() and switcher

Kristian Høgsberg krh at bitplanet.net
Thu Mar 29 08:43:37 PDT 2012


On Thu, Mar 29, 2012 at 11:37 AM, Kristian Hoegsberg
<hoegsberg at gmail.com> wrote:
> On Tue, Mar 13, 2012 at 11:18:23PM +0800, zhiwen.wu at linux.intel.com wrote:
>> From: Alex Wu <zhiwen.wu at linux.intel.com>
>>
>> For activate(), stack the surface atop fullscreen layer instead of
>> toplevel layer.
>> For switcher, involve the fullscreen surfaces into surface iteration,
>> and make fullscreen surface and its black surface transparent if
>> necessary.
>
> Sorry for the long delay in reviewing this.  Comments below.
>
> Kristian
>
...

> Instead of this fragile get_upper/get_lower stuff, I think we just
> need to set a destroy listener on the black surface so we can
> recognize it like we recognize shell surfaces in get_shell_surface.
> The destroy function shouldn't do anything, but we'll be able to
> recognize the black surface by it.  Embed the wl_listener as
> shell_surface.fullscreen.destroy_listener, and that way
> we can get the associated fullscreen surface as
>
>  shsurf = container_of(listener, struct shell_surface, fullscreen.destroy_listener);
>
> then we could do something like
>
>  is_black_surface(surface, &upper);
>
> which does all this and returns the upper surface if it's a black
> surface.

And I just remembered that we committed Anders new weston_surface
configure vfunc.  So we can just set the configure vfunc for the black
surface to a black_surface_configure() no-op function and use that to
determine that it's the black surface.  I also think that we now need
a void *private pointer in weston_surface now that we have a function
pointer in there.

Kristian


More information about the wayland-devel mailing list