]> Dogcows Code - chaz/openbox/blobdiff - util/bsetroot.cc
add header for perror()
[chaz/openbox] / util / bsetroot.cc
index 470ca7b3ead64d6d89cb67fb7dcf25212603ce46..6f8e122d8995c7a89fcf302e7334068ee1ecd023 100644 (file)
@@ -1,5 +1,5 @@
 // -*- mode++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
-// Window.cc for Blackbox - an X11 Window manager
+// bsetroot.cc for Blackbox - an X11 Window manager
 // Copyright (c) 2001 - 2002 Sean 'Shaleh' Perry <shaleh at debian.org>
 // Copyright (c) 1997 - 2000, 2002 Brad Hughes <bhughes at trolltech.com>
 //
@@ -49,8 +49,8 @@ extern "C" {
 I18n i18n;
 
 bsetroot::bsetroot(int argc, char **argv, char *dpy_name)
-  : BaseDisplay(argv[0], dpy_name)
-{
+  : BaseDisplay(argv[0], dpy_name) {
+
   grad = fore = back = (char *) 0;
 
   bool mod = False, sol = False, grd = False;
@@ -97,8 +97,9 @@ bsetroot::bsetroot(int argc, char **argv, char *dpy_name)
     } else if (! strcmp("-display", argv[i])) {
       // -display passed through tests ealier... we just skip it now
       i++;
-    } else
+    } else {
       usage();
+    }
   }
 
   if ((mod + sol + grd) != True) {
@@ -150,11 +151,19 @@ void bsetroot::setPixmapProperty(int screen, Pixmap pixmap) {
 
   /* Clear out the old pixmap */
   XGetWindowProperty(getXDisplay(), screen_info->getRootWindow(),
-                     rootpmap_id, 0L, 1L, False, XA_PIXMAP,
-                     &type, &format, &length, &after, &data);
-  if (type == XA_PIXMAP && format == 32) {
-    XKillClient(getXDisplay(), *((Pixmap *) data));
-    XSync(getXDisplay(), False);
+                    rootpmap_id, 0L, 1L, False, AnyPropertyType,
+                    &type, &format, &length, &after, &data);
+
+  if ((type == XA_PIXMAP) && (format == 32) && (length == 1)) {
+    unsigned char* data_esetroot = 0;
+    XGetWindowProperty(getXDisplay(), screen_info->getRootWindow(),
+                       esetroot_id, 0L, 1L, False, AnyPropertyType,
+                       &type, &format, &length, &after, &data_esetroot);
+    if (data && data_esetroot && *((Pixmap *) data)) {
+      XKillClient(getXDisplay(), *((Pixmap *) data));
+      XSync(getXDisplay(), False);
+      XFree(data_esetroot);
+    }
     XFree(data);
   }
 
@@ -332,7 +341,7 @@ void bsetroot::usage(int exit_code) {
 int main(int argc, char **argv) {
   char *display_name = (char *) 0;
 
-  i18n.openCatalog("blackbox.cat");
+  i18n.openCatalog("openbox.cat");
 
   for (int i = 1; i < argc; i++) {
     if (! strcmp(argv[i], "-display")) {
This page took 0.026283 seconds and 4 git commands to generate.