]> Pileus Git - ~andy/gtk/commitdiff
Avoid triggering an X error when the client->manager_window is
authorOwen Taylor <otaylor@redhat.com>
Tue, 10 Feb 2004 18:51:19 +0000 (18:51 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Tue, 10 Feb 2004 18:51:19 +0000 (18:51 +0000)
Tue Feb 10 12:02:14 2004  Owen Taylor  <otaylor@redhat.com>

        * gdk/x11/xsettings-client.c (read_settings): Avoid
        triggering an X error when the client->manager_window
        is None...makes logs look cleaner.

        * gdk/x11/gdkproperty-x11.c (gdk_property_get): Handle
        GDK_NONE to mean AnyPropertyType as documented. (Reported
        by Yu Shao)

        * gdk/x11/gdkevents-x11.c (fetch_net_wm_check_window,
        gdk_x11_screen_get_window_manager_name): Fix error trap
        we've been leaking since 2002... (#129538)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/x11/gdkevents-x11.c
gdk/x11/gdkproperty-x11.c
gdk/x11/xsettings-client.c

index 3f72b5076cacf1be40ec361f6933e2f51955aeda..eb909cdff9b6d90c0b03834878703dea2ac842af 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+Tue Feb 10 12:02:14 2004  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/xsettings-client.c (read_settings): Avoid
+       triggering an X error when the client->manager_window
+       is None...makes logs look cleaner.
+
+       * gdk/x11/gdkproperty-x11.c (gdk_property_get): Handle
+       GDK_NONE to mean AnyPropertyType as documented. (Reported 
+       by Yu Shao)
+
+       * gdk/x11/gdkevents-x11.c (fetch_net_wm_check_window,
+       gdk_x11_screen_get_window_manager_name): Fix error trap
+       we've been leaking since 2002... (#129538)
+
 2004-02-10  Federico Mena Quintero  <federico@ximian.com>
 
        Fixes the entry-related part of #133852.
index 3f72b5076cacf1be40ec361f6933e2f51955aeda..eb909cdff9b6d90c0b03834878703dea2ac842af 100644 (file)
@@ -1,3 +1,17 @@
+Tue Feb 10 12:02:14 2004  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/xsettings-client.c (read_settings): Avoid
+       triggering an X error when the client->manager_window
+       is None...makes logs look cleaner.
+
+       * gdk/x11/gdkproperty-x11.c (gdk_property_get): Handle
+       GDK_NONE to mean AnyPropertyType as documented. (Reported 
+       by Yu Shao)
+
+       * gdk/x11/gdkevents-x11.c (fetch_net_wm_check_window,
+       gdk_x11_screen_get_window_manager_name): Fix error trap
+       we've been leaking since 2002... (#129538)
+
 2004-02-10  Federico Mena Quintero  <federico@ximian.com>
 
        Fixes the entry-related part of #133852.
index 3f72b5076cacf1be40ec361f6933e2f51955aeda..eb909cdff9b6d90c0b03834878703dea2ac842af 100644 (file)
@@ -1,3 +1,17 @@
+Tue Feb 10 12:02:14 2004  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/xsettings-client.c (read_settings): Avoid
+       triggering an X error when the client->manager_window
+       is None...makes logs look cleaner.
+
+       * gdk/x11/gdkproperty-x11.c (gdk_property_get): Handle
+       GDK_NONE to mean AnyPropertyType as documented. (Reported 
+       by Yu Shao)
+
+       * gdk/x11/gdkevents-x11.c (fetch_net_wm_check_window,
+       gdk_x11_screen_get_window_manager_name): Fix error trap
+       we've been leaking since 2002... (#129538)
+
 2004-02-10  Federico Mena Quintero  <federico@ximian.com>
 
        Fixes the entry-related part of #133852.
index 3f72b5076cacf1be40ec361f6933e2f51955aeda..eb909cdff9b6d90c0b03834878703dea2ac842af 100644 (file)
@@ -1,3 +1,17 @@
+Tue Feb 10 12:02:14 2004  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/xsettings-client.c (read_settings): Avoid
+       triggering an X error when the client->manager_window
+       is None...makes logs look cleaner.
+
+       * gdk/x11/gdkproperty-x11.c (gdk_property_get): Handle
+       GDK_NONE to mean AnyPropertyType as documented. (Reported 
+       by Yu Shao)
+
+       * gdk/x11/gdkevents-x11.c (fetch_net_wm_check_window,
+       gdk_x11_screen_get_window_manager_name): Fix error trap
+       we've been leaking since 2002... (#129538)
+
 2004-02-10  Federico Mena Quintero  <federico@ximian.com>
 
        Fixes the entry-related part of #133852.
index 3f72b5076cacf1be40ec361f6933e2f51955aeda..eb909cdff9b6d90c0b03834878703dea2ac842af 100644 (file)
@@ -1,3 +1,17 @@
+Tue Feb 10 12:02:14 2004  Owen Taylor  <otaylor@redhat.com>
+
+       * gdk/x11/xsettings-client.c (read_settings): Avoid
+       triggering an X error when the client->manager_window
+       is None...makes logs look cleaner.
+
+       * gdk/x11/gdkproperty-x11.c (gdk_property_get): Handle
+       GDK_NONE to mean AnyPropertyType as documented. (Reported 
+       by Yu Shao)
+
+       * gdk/x11/gdkevents-x11.c (fetch_net_wm_check_window,
+       gdk_x11_screen_get_window_manager_name): Fix error trap
+       we've been leaking since 2002... (#129538)
+
 2004-02-10  Federico Mena Quintero  <federico@ximian.com>
 
        Fixes the entry-related part of #133852.
index d39f76e8c56b17214fd8f492f5bb967eed49399c..f10be2154a596bc823b262f2e3148a1e7a70e0e4 100644 (file)
@@ -2406,15 +2406,19 @@ fetch_net_wm_check_window (GdkScreen *screen)
   
   /* Find out if this WM goes away, so we can reset everything. */
   XSelectInput (screen_x11->xdisplay, *xwindow, StructureNotifyMask);
+  gdk_display_sync (display);
 
-  screen_x11->wmspec_check_window = *xwindow;
-  XFree (xwindow);
-
-  screen_x11->need_refetch_net_supported = TRUE;
-  screen_x11->need_refetch_wm_name = TRUE;
-  
-  /* Careful, reentrancy */
-  _gdk_x11_screen_window_manager_changed (GDK_SCREEN (screen_x11));
+  if (gdk_error_trap_pop () == Success)
+    {
+      screen_x11->wmspec_check_window = *xwindow;
+      XFree (xwindow);
+      
+      screen_x11->need_refetch_net_supported = TRUE;
+      screen_x11->need_refetch_wm_name = TRUE;
+      
+      /* Careful, reentrancy */
+      _gdk_x11_screen_window_manager_changed (GDK_SCREEN (screen_x11));
+    }
 }
 
 /**
@@ -2455,6 +2459,8 @@ gdk_x11_screen_get_window_manager_name (GdkScreen *screen)
           guchar *name;
           
           name = NULL;
+
+         gdk_error_trap_push ();
           
           XGetWindowProperty (GDK_DISPLAY_XDISPLAY (screen_x11->display),
                               screen_x11->wmspec_check_window,
index 96cb6317db335af34dfa1081880ec23dd0ba1337..70134d6356b79031a5f68cde6587f60cfd0d9cd0 100644 (file)
@@ -505,7 +505,10 @@ gdk_property_get (GdkWindow   *window,
 
   display = gdk_drawable_get_display (window);
   xproperty = gdk_x11_atom_to_xatom_for_display (display, property);
-  xtype = gdk_x11_atom_to_xatom_for_display (display, type);
+  if (type == GDK_NONE)
+    xtype = AnyPropertyType;
+  else
+    xtype = GDK_NONE;
 
   ret_data = NULL;
   
index dd59908ea2004b1d142e8f53b262e590bd22347f..891d477e767223c0bf9f1778344c780ede7cab29 100644 (file)
@@ -373,24 +373,27 @@ read_settings (XSettingsClient *client)
   XSettingsList *old_list = client->settings;
 
   client->settings = NULL;
-  
-  old_handler = XSetErrorHandler (ignore_errors);
-  result = XGetWindowProperty (client->display, client->manager_window,
-                              client->xsettings_atom, 0, LONG_MAX,
-                              False, client->xsettings_atom,
-                              &type, &format, &n_items, &bytes_after, &data);
-  XSetErrorHandler (old_handler);
-
-  if (result == Success && type == client->xsettings_atom)
+
+  if (client->manager_window)
     {
-      if (format != 8)
+      old_handler = XSetErrorHandler (ignore_errors);
+      result = XGetWindowProperty (client->display, client->manager_window,
+                                  client->xsettings_atom, 0, LONG_MAX,
+                                  False, client->xsettings_atom,
+                                  &type, &format, &n_items, &bytes_after, &data);
+      XSetErrorHandler (old_handler);
+      
+      if (result == Success && type == client->xsettings_atom)
        {
-         fprintf (stderr, "Invalid format for XSETTINGS property %d", format);
+         if (format != 8)
+           {
+             fprintf (stderr, "Invalid format for XSETTINGS property %d", format);
+           }
+         else
+           client->settings = parse_settings (data, n_items);
+         
+         XFree (data);
        }
-      else
-       client->settings = parse_settings (data, n_items);
-
-      XFree (data);
     }
 
   notify_changes (client, old_list);