[cogl] Get rid of the foreign shell and compositor APIs



commit 8ca36a1d1ab7236fec0f4d7b7361ca96e14c32be
Author: Neil Roberts <neil linux intel com>
Date:   Wed Jul 3 18:48:15 2013 +0100

    Get rid of the foreign shell and compositor APIs
    
    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.
    
    Reviewed-by: Robert Bragg <robert linux intel com>

 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>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]