From edfaeba32bc6c33aec1351b5d9a5424abc273b1d Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 19 Apr 2013 16:22:32 -0400 Subject: [PATCH] Revert "wayland: Cache the discovery connection and reuse if possible" This reverts commit 524ce7f88e26a498c43729f99fda564f5e222582. --- gdk/wayland/gdkdisplay-wayland.c | 7 ++++- gdk/wayland/gdkdisplaymanager-wayland.c | 40 ++++--------------------- gdk/wayland/gdkprivate-wayland.h | 2 +- 3 files changed, 12 insertions(+), 37 deletions(-) diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c index d52d8b85d9..1f1f413ef5 100644 --- a/gdk/wayland/gdkdisplay-wayland.c +++ b/gdk/wayland/gdkdisplay-wayland.c @@ -214,13 +214,18 @@ log_handler(const char *format, va_list args) } GdkDisplay * -_gdk_wayland_display_open (struct wl_display *wl_display) +_gdk_wayland_display_open (const gchar *display_name) { + struct wl_display *wl_display; GdkDisplay *display; GdkWaylandDisplay *display_wayland; wl_log_set_handler_client(log_handler); + wl_display = wl_display_connect(display_name); + if (!wl_display) + return NULL; + display = g_object_new (GDK_TYPE_WAYLAND_DISPLAY, NULL); display_wayland = GDK_WAYLAND_DISPLAY (display); diff --git a/gdk/wayland/gdkdisplaymanager-wayland.c b/gdk/wayland/gdkdisplaymanager-wayland.c index f5b664c333..902ac164b0 100644 --- a/gdk/wayland/gdkdisplaymanager-wayland.c +++ b/gdk/wayland/gdkdisplaymanager-wayland.c @@ -34,10 +34,6 @@ struct _GdkWaylandDisplayManager GSList *displays; gboolean init_failed; - struct { - struct wl_display *wl_display; - gchar *name; - } cached_display; }; struct _GdkWaylandDisplayManagerClass @@ -55,7 +51,6 @@ gdk_wayland_display_manager_initable_init (GInitable *initable, GCancellable *cancellable, GError **error) { - GdkWaylandDisplayManager *manager = GDK_WAYLAND_DISPLAY_MANAGER (initable); struct wl_display *wl_display; /* Set by the compositor when launching a special client - and it gets reset @@ -69,12 +64,12 @@ gdk_wayland_display_manager_initable_init (GInitable *initable, if (!wl_display) { - manager->init_failed = TRUE; + GDK_WAYLAND_DISPLAY_MANAGER (initable)->init_failed = TRUE; return FALSE; } - manager->cached_display.name = g_strdup (gdk_get_display_arg_name ()); - manager->cached_display.wl_display = wl_display; + wl_display_disconnect (wl_display); + return TRUE; } @@ -94,35 +89,10 @@ gdk_wayland_display_manager_finalize (GObject *object) } static GdkDisplay * -gdk_wayland_display_manager_open_display (GdkDisplayManager *display_manager, +gdk_wayland_display_manager_open_display (GdkDisplayManager *manager, const gchar *name) { - GdkWaylandDisplayManager *manager = GDK_WAYLAND_DISPLAY_MANAGER (display_manager); - struct wl_display *wl_display; - - if (name == manager->cached_display.name || - g_strcmp0 (name, manager->cached_display.name)) - { - /* Cache hit */ - wl_display = manager->cached_display.wl_display; - } - - if (!wl_display) - { - /* Cache miss */ - if (manager->cached_display.wl_display) - wl_display_disconnect (manager->cached_display.wl_display); - wl_display = wl_display_connect (name); - } - - /* Use the cache at most once */ - g_free (manager->cached_display.name); - manager->cached_display.wl_display = NULL; - - if (!wl_display) - return NULL; - - return _gdk_wayland_display_open (wl_display); + return _gdk_wayland_display_open (name); } static void diff --git a/gdk/wayland/gdkprivate-wayland.h b/gdk/wayland/gdkprivate-wayland.h index 9c9a44c9f7..5ce3deb488 100644 --- a/gdk/wayland/gdkprivate-wayland.h +++ b/gdk/wayland/gdkprivate-wayland.h @@ -152,7 +152,7 @@ void _gdk_wayland_display_queue_events (GdkDisplay *display); GdkAppLaunchContext *_gdk_wayland_display_get_app_launch_context (GdkDisplay *display); -GdkDisplay *_gdk_wayland_display_open (struct wl_display *display); +GdkDisplay *_gdk_wayland_display_open (const gchar *display_name); GdkWindow *_gdk_wayland_screen_create_root_window (GdkScreen *screen, int width,