[Cogl] [PATCH 3/4] Get rid of the foreign shell and compositor APIs

Robert Bragg robert at sixbynine.org
Tue Jul 9 05:18:50 PDT 2013


This looks good to land to me:

Reviewed-by: Robert Bragg <robert at linux.intel.com>

thanks,
- Robert

On Thu, Jul 4, 2013 at 1:46 PM, Neil Roberts <neil at linux.intel.com> wrote:
> The Wayland 1.0 protocol supports multiple independent components querying the
> available interfaces by retreiving their own wl_registry object so the
> application doesn't need to pass them down anymore.
> ---
>  cogl/cogl-renderer-private.h           |  2 -
>  cogl/cogl-wayland-renderer.h           | 85 ----------------------------------
>  cogl/winsys/cogl-winsys-egl-wayland.c  | 79 +++----------------------------
>  doc/reference/cogl2/cogl2-sections.txt |  4 --
>  4 files changed, 6 insertions(+), 164 deletions(-)
>
> diff --git a/cogl/cogl-renderer-private.h b/cogl/cogl-renderer-private.h
> index b5ebd7b..dfc79c6 100644
> --- a/cogl/cogl-renderer-private.h
> +++ b/cogl/cogl-renderer-private.h
> @@ -77,8 +77,6 @@ struct _CoglRenderer
>
>  #if defined (COGL_HAS_EGL_PLATFORM_WAYLAND_SUPPORT)
>    struct wl_display *foreign_wayland_display;
> -  struct wl_compositor *foreign_wayland_compositor;
> -  struct wl_shell *foreign_wayland_shell;
>  #endif
>
>  #ifdef COGL_HAS_SDL_SUPPORT
> diff --git a/cogl/cogl-wayland-renderer.h b/cogl/cogl-wayland-renderer.h
> index 2b18b58..3f9e434 100644
> --- a/cogl/cogl-wayland-renderer.h
> +++ b/cogl/cogl-wayland-renderer.h
> @@ -44,15 +44,6 @@ COGL_BEGIN_DECLS
>   * to work with instead of leaving Cogl to automatically connect to a
>   * wayland compositor.
>   *
> - * <note>If you use this API you must also explicitly set foreign
> - * Wayland compositor and shell objects using the
> - * cogl_wayland_renderer_set_foreign_compositor() and
> - * cogl_wayland_renderer_set_foreign_shell() respectively. This ie
> - * because Wayland doesn't currently provide a way to retrospectively
> - * query these interfaces so the expectation is that if you have taken
> - * ownership of the display then you will also have been notified of
> - * the compositor and shell interfaces which Cogl needs to use.</note>
> - *
>   * Since: 1.8
>   * Stability: unstable
>   */
> @@ -82,82 +73,6 @@ cogl_wayland_renderer_set_foreign_display (CoglRenderer *renderer,
>  struct wl_display *
>  cogl_wayland_renderer_get_display (CoglRenderer *renderer);
>
> -/**
> - * cogl_wayland_renderer_set_foreign_compositor:
> - * @renderer: A #CoglRenderer
> - * @compositor: A Wayland compositor
> - *
> - * Allows you to explicitly notify Cogl of a Wayland compositor
> - * interface to use. This API should be used in conjunction with
> - * cogl_wayland_renderer_set_foreign_display() because if you are
> - * connecting to a wayland compositor manually that will also mean you
> - * will be notified on connection of the available interfaces that
> - * can't be queried retrosectively with the current Wayland protocol.
> - *
> - * Since: 1.8
> - * Stability: unstable
> - */
> -void
> -cogl_wayland_renderer_set_foreign_compositor (CoglRenderer *renderer,
> -                                              struct wl_compositor *compositor);
> -
> -/**
> - * cogl_wayland_renderer_get_compositor:
> - * @renderer: A #CoglRenderer
> - *
> - * Retrieves the Wayland compositor interface that Cogl is using. If a
> - * foreign compositor has been specified using
> - * cogl_wayland_renderer_set_foreign_compositor() then that compositor
> - * will be returned. If no foreign compositor has been specified then
> - * the compositor that Cogl is notified of internally will be returned
> - * unless the renderer has not yet been connected (either implicitly
> - * or explicitly by calling cogl_renderer_connect()) in which case
> - * %NULL is returned.
> - *
> - * Since: 1.8
> - * Stability: unstable
> - */
> -struct wl_compositor *
> -cogl_wayland_renderer_get_compositor (CoglRenderer *renderer);
> -
> -/**
> - * cogl_wayland_renderer_set_foreign_shell:
> - * @renderer: A #CoglRenderer
> - * @shell: A Wayland shell
> - *
> - * Allows you to explicitly notify Cogl of a Wayland shell interface
> - * to use.  This API should be used in conjunction with
> - * cogl_wayland_renderer_set_foreign_display() because if you are
> - * connecting to a wayland compositor manually that will also mean you
> - * will be notified on connection of the available interfaces that
> - * can't be queried retrosectively with the current Wayland protocol.
> - *
> - * Since: 1.10
> - * Stability: unstable
> - */
> -void
> -cogl_wayland_renderer_set_foreign_shell (CoglRenderer *renderer,
> -                                         struct wl_shell *shell);
> -
> -/**
> - * cogl_wayland_renderer_get_shell:
> - * @renderer: A #CoglRenderer
> - *
> - * Retrieves the Wayland shell interface that Cogl is using. If a
> - * foreign shell has been specified using
> - * cogl_wayland_renderer_set_foreign_shell() then that shell
> - * will be returned. If no foreign shell has been specified then
> - * the shell that Cogl is notified of internally will be returned
> - * unless the renderer has not yet been connected (either implicitly
> - * or explicitly by calling cogl_renderer_connect()) in which case
> - * %NULL is returned.
> - *
> - * Since: 1.10
> - * Stability: unstable
> - */
> -struct wl_shell *
> -cogl_wayland_renderer_get_shell (CoglRenderer *renderer);
> -
>  COGL_END_DECLS
>
>  #endif /* __COGL_WAYLAND_RENDERER_H__ */
> diff --git a/cogl/winsys/cogl-winsys-egl-wayland.c b/cogl/winsys/cogl-winsys-egl-wayland.c
> index 0af2cfb..fad0cae 100644
> --- a/cogl/winsys/cogl-winsys-egl-wayland.c
> +++ b/cogl/winsys/cogl-winsys-egl-wayland.c
> @@ -197,15 +197,6 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
>    if (renderer->foreign_wayland_display)
>      {
>        wayland_renderer->wayland_display = renderer->foreign_wayland_display;
> -      /* XXX: For now we have to assume that if a foreign display is
> -       * given then a foreign compositor and shell must also have been
> -       * given because wayland doesn't provide a way to
> -       * retrospectively be notified of the these objects. */
> -      g_assert (renderer->foreign_wayland_compositor);
> -      g_assert (renderer->foreign_wayland_shell);
> -      wayland_renderer->wayland_compositor =
> -        renderer->foreign_wayland_compositor;
> -      wayland_renderer->wayland_shell = renderer->foreign_wayland_shell;
>      }
>    else
>      {
> @@ -217,14 +208,14 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
>                         "Failed to connect wayland display");
>            goto error;
>          }
> +    }
>
> -      wayland_renderer->wayland_registry =
> -        wl_display_get_registry (wayland_renderer->wayland_display);
> +  wayland_renderer->wayland_registry =
> +    wl_display_get_registry (wayland_renderer->wayland_display);
>
> -      wl_registry_add_listener (wayland_renderer->wayland_registry,
> -                                &registry_listener,
> -                                egl_renderer);
> -    }
> +  wl_registry_add_listener (wayland_renderer->wayland_registry,
> +                            &registry_listener,
> +                            egl_renderer);
>
>    /*
>     * Ensure that that we've received the messages setting up the
> @@ -572,64 +563,6 @@ cogl_wayland_renderer_get_display (CoglRenderer *renderer)
>      return NULL;
>  }
>
> -void
> -cogl_wayland_renderer_set_foreign_compositor (CoglRenderer *renderer,
> -                                              struct wl_compositor *compositor)
> -{
> -  _COGL_RETURN_IF_FAIL (cogl_is_renderer (renderer));
> -
> -  /* NB: Renderers are considered immutable once connected */
> -  _COGL_RETURN_IF_FAIL (!renderer->connected);
> -
> -  renderer->foreign_wayland_compositor = compositor;
> -}
> -
> -struct wl_compositor *
> -cogl_wayland_renderer_get_compositor (CoglRenderer *renderer)
> -{
> -  _COGL_RETURN_VAL_IF_FAIL (cogl_is_renderer (renderer), NULL);
> -
> -  if (renderer->foreign_wayland_compositor)
> -    return renderer->foreign_wayland_compositor;
> -  else if (renderer->connected)
> -    {
> -      CoglRendererEGL *egl_renderer = renderer->winsys;
> -      CoglRendererWayland *wayland_renderer = egl_renderer->platform;
> -      return wayland_renderer->wayland_compositor;
> -    }
> -  else
> -    return NULL;
> -}
> -
> -void
> -cogl_wayland_renderer_set_foreign_shell (CoglRenderer *renderer,
> -                                         struct wl_shell *shell)
> -{
> -  _COGL_RETURN_IF_FAIL (cogl_is_renderer (renderer));
> -
> -  /* NB: Renderers are considered immutable once connected */
> -  _COGL_RETURN_IF_FAIL (!renderer->connected);
> -
> -  renderer->foreign_wayland_shell = shell;
> -}
> -
> -struct wl_shell *
> -cogl_wayland_renderer_get_shell (CoglRenderer *renderer)
> -{
> -  _COGL_RETURN_VAL_IF_FAIL (cogl_is_renderer (renderer), NULL);
> -
> -  if (renderer->foreign_wayland_shell)
> -    return renderer->foreign_wayland_shell;
> -  else if (renderer->connected)
> -    {
> -      CoglRendererEGL *egl_renderer = renderer->winsys;
> -      CoglRendererWayland *wayland_renderer = egl_renderer->platform;
> -      return wayland_renderer->wayland_shell;
> -    }
> -  else
> -    return NULL;
> -}
> -
>  struct wl_surface *
>  cogl_wayland_onscreen_get_surface (CoglOnscreen *onscreen)
>  {
> diff --git a/doc/reference/cogl2/cogl2-sections.txt b/doc/reference/cogl2/cogl2-sections.txt
> index 5a1356f..1a6feee 100644
> --- a/doc/reference/cogl2/cogl2-sections.txt
> +++ b/doc/reference/cogl2/cogl2-sections.txt
> @@ -90,10 +90,6 @@ cogl_win32_renderer_set_event_retrieval_enabled
>  <SUBSECTION>
>  cogl_wayland_renderer_set_foreign_display
>  cogl_wayland_renderer_get_display
> -cogl_wayland_renderer_set_foreign_compositor
> -cogl_wayland_renderer_get_compositor
> -cogl_wayland_renderer_set_foreign_shell
> -cogl_wayland_renderer_get_shell
>  </SECTION>
>
>  <SECTION>
> --
> 1.7.11.3.g3c3efa5
>
> _______________________________________________
> Cogl mailing list
> Cogl at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/cogl


More information about the Cogl mailing list