summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2010-12-27 01:02:52 -0500
committerMatthias Clasen <mclasen@redhat.com>2010-12-27 01:02:52 -0500
commit48b47971b5c6657a8141b9128c5dc05bfa80ced7 (patch)
tree984ea65efff8187a6bc7e6a0d26fe7cfa75b1fbc
parent59ea137fa069c5506aeae95d7b7a10c3d28f8d62 (diff)
downloadgtk+-48b47971b5c6657a8141b9128c5dc05bfa80ced7.tar.gz
Fix some issues with initial setup of GdkX11DisplayManager
We need to defer setting the default display until the GdkDisplay is fully initialized. Also, short-circuit some encoding conversions when creating windows, to avoid an implicit dependency on the display being in the list of displays yet.
-rw-r--r--gdk/x11/gdkdisplaymanager-x11.c12
-rw-r--r--gdk/x11/gdkwindow-x11.c2
2 files changed, 9 insertions, 5 deletions
diff --git a/gdk/x11/gdkdisplaymanager-x11.c b/gdk/x11/gdkdisplaymanager-x11.c
index 7d557fd1af..dd712d9296 100644
--- a/gdk/x11/gdkdisplaymanager-x11.c
+++ b/gdk/x11/gdkdisplaymanager-x11.c
@@ -49,7 +49,14 @@ static GdkDisplay *
gdk_x11_display_manager_open_display (GdkDisplayManager *manager,
const gchar *name)
{
- return _gdk_x11_display_open (name);
+ GdkX11DisplayManager *manager_x11 = GDK_X11_DISPLAY_MANAGER (manager);
+ GdkDisplay *display;
+
+ display = _gdk_x11_display_open (name);
+ if (manager_x11->default_display == NULL)
+ gdk_display_manager_set_default_display (manager, display);
+
+ return display;
}
static GSList *
@@ -111,9 +118,6 @@ _gdk_x11_display_manager_add_display (GdkDisplayManager *manager,
{
GdkX11DisplayManager *manager_x11 = GDK_X11_DISPLAY_MANAGER (manager);
- if (manager_x11->displays == NULL)
- gdk_display_manager_set_default_display (manager, display);
-
manager_x11->displays = g_slist_prepend (manager_x11->displays, display);
}
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 5cc9fd20e4..bd76a511a9 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -2244,7 +2244,7 @@ set_text_property (GdkDisplay *display,
if (utf8_is_latin1 (utf8_str))
{
prop_type = XA_STRING;
- prop_text = gdk_utf8_to_string_target (utf8_str);
+ prop_text = _gdk_x11_display_utf8_to_string_target (display, utf8_str);
prop_length = prop_text ? strlen (prop_text) : 0;
prop_format = 8;
is_compound_text = FALSE;