[Spice-devel] [PATCH spice 4/4] spicec-x11: Add a class hint to our window managet hints

Alon Levy alevy at redhat.com
Wed Dec 15 10:09:33 PST 2010


On Wed, Dec 15, 2010 at 07:01:42PM +0100, Hans de Goede wrote:
> Hi,
> 
> On 12/15/2010 06:24 PM, Alon Levy wrote:
> >On Wed, Dec 15, 2010 at 04:50:09PM +0100, Hans de Goede wrote:
> >>This helps people who want to tell their windowmanager to do something special
> >>with spicec, like make it sticky, or whatever, see:
> >>https://bugzilla.redhat.com/show_bug.cgi?id=662452#c4
> >>---
> >>  client/x11/red_window.cpp |   11 ++++++++++-
> >>  1 files changed, 10 insertions(+), 1 deletions(-)
> >>
> >>diff --git a/client/x11/red_window.cpp b/client/x11/red_window.cpp
> >>index 0816bf3..d7b19f9 100644
> >>--- a/client/x11/red_window.cpp
> >>+++ b/client/x11/red_window.cpp
> >>@@ -1214,6 +1214,7 @@ void RedWindow_p::create(RedWindow&  red_window, PixelsSource_p&  pix_source,
> >>
> >>      try {
> >>          int res;
> >>+        XClassHint *class_hint;
> >>
> >>          XLockDisplay(x_display);
> >>          res = XSaveContext(x_display, window, user_data_context, (XPointer)&red_window);
> >>@@ -1223,8 +1224,16 @@ void RedWindow_p::create(RedWindow&  red_window, PixelsSource_p&  pix_source,
> >>          }
> >>
> >>          XSetWMProtocols(x_display, window,&wm_delete_window_atom, 1);
> >>-        XGCValues gc_vals;
> >>+        class_hint = XAllocClassHint();
> >>+        if (!class_hint) {
> >>+            THROW("allocating class hint failed");
> >>+        }
> >>+        class_hint->res_name = (char *)"spicec";
> >>+        class_hint->res_class = (char *)"spicec";
> >>+        XSetClassHint(x_display, window, class_hint);
> >>+        XFree(class_hint);
> >>
> >
> >Is it wise to have both operations in the same try block? don't we want to continue
> >as before if XAllocClassHint fails but the rest doesn't?
> >
> 
> XAllocClassHint can never fail except when we run out of memory, at which time we're
> very likely going to crash anyways. I could replace the test + throw by an assert I guess.
> 

The way it is seems ok too. ACK.

> 
> >>+        XGCValues gc_vals;
> >>          XLockDisplay(x_display);
> >>          gc = XCreateGC(x_display, window, 0,&gc_vals);
> >>          XUnlockDisplay(x_display);
> >>--
> >>1.7.3.2
> >>
> >>_______________________________________________
> >>Spice-devel mailing list
> >>Spice-devel at lists.freedesktop.org
> >>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> 
> Regards,
> 
> Hans
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list