summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Roberts <neil@linux.intel.com>2013-07-03 18:48:15 +0100
committerNeil Roberts <neil@linux.intel.com>2013-07-09 15:46:46 +0100
commit18ce7ad7f5969fe10b7fd0c5177616167919d2f5 (patch)
tree5b55f1c90971bab7b2e904fffb66a3fca5640ee3
parent8911da794ef363d777ebcb68d0db5fa85fb776d4 (diff)
downloadcogl-18ce7ad7f5969fe10b7fd0c5177616167919d2f5.tar.gz
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> (cherry picked from commit 8ca36a1d1ab7236fec0f4d7b7361ca96e14c32be)
-rw-r--r--cogl/cogl-renderer-private.h2
-rw-r--r--cogl/cogl-wayland-renderer.h85
-rw-r--r--cogl/winsys/cogl-winsys-egl-wayland.c79
-rw-r--r--doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt4
4 files changed, 6 insertions, 164 deletions
diff --git a/cogl/cogl-renderer-private.h b/cogl/cogl-renderer-private.h
index efc20a34..75ae1493 100644
--- a/cogl/cogl-renderer-private.h
+++ b/cogl/cogl-renderer-private.h
@@ -76,8 +76,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 2b18b587..3f9e4341 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 6d6f965e..4b4d522f 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
@@ -573,64 +564,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/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt b/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt
index be9bfce2..9b31f3a4 100644
--- a/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt
+++ b/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-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>