[gtk+] Revert "wayland: Cache the discovery connection and reuse if possible"
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Revert "wayland: Cache the discovery connection and reuse if possible"
- Date: Fri, 19 Apr 2013 20:27:31 +0000 (UTC)
commit edfaeba32bc6c33aec1351b5d9a5424abc273b1d
Author: Benjamin Otte <otte redhat com>
Date: Fri Apr 19 16:22:32 2013 -0400
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 d52d8b8..1f1f413 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 f5b664c..902ac16 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 9c9a44c..5ce3deb 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,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]