tags 432493 patch fixed-upstream
thanks

C> Yes, it is fixed in this one. I will build and try the other one you
C> just sent me first thing tomorrow.

version with patch temporary uploaded to:
http://uvw.ru/debian/fluxbox/fluxbox-1.0/

src package:
http://uvw.ru/debian/fluxbox/fluxbox-1.0/fluxbox_1.0~rc3-3.dsc
http://uvw.ru/debian/fluxbox/fluxbox-1.0/fluxbox_1.0~rc3-3.diff.gz
http://uvw.ru/debian/fluxbox/fluxbox-1.0/fluxbox_1.0~rc3.orig.tar.gz

build instructions are the same

Please check if this bug is also contained in the 1.0~rc3-3
version ?
#! /bin/sh /usr/share/dpatch/dpatch-run
## 60_fix_fluxbox_locks_up_when_using_skype.dpatch by  <[EMAIL PROTECTED]>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Fix: fluxbox locks up when using skype

@DPATCH@

--- fluxbox-1.0~rc3/src/FbTk/FbPixmap.cc
+++ fluxbox-1.0~rc3/src/FbTk/FbPixmap.cc
@@ -109,13 +114,14 @@
     Window root;
     int x, y;
     unsigned int border_width, bpp;
-    XGetGeometry(display(),
-                 pm,
-                 &root,
-                 &x, &y,
-                 &m_width, &m_height,
-                 &border_width,
-                 &bpp);
+    if (!XGetGeometry(display(),
+                      pm,
+                      &root,
+                      &x, &y,
+                      &m_width, &m_height,
+                      &border_width,
+                      &bpp))
+        return *this;
 
     m_depth = bpp;
 
@@ -161,13 +167,14 @@
     unsigned int border_width, bpp;
     unsigned int new_width, new_height;
 
-    XGetGeometry(display(),
-                 pm,
-                 &root,
-                 &x, &y,
-                 &new_width, &new_height,
-                 &border_width,
-                 &bpp);
+    if (!XGetGeometry(display(),
+                      pm,
+                      &root,
+                      &x, &y,
+                      &new_width, &new_height,
+                      &border_width,
+                      &bpp))
+        return;
 
     if (depth == 0)
         depth = bpp;
@@ -347,9 +354,10 @@
     return ret;
 }
 
-void FbPixmap::rootwinPropertyNotify(int screen_num, Atom atom) {
+// returns whether or not the background was changed
+bool FbPixmap::rootwinPropertyNotify(int screen_num, Atom atom) {
     if (!FbTk::Transparent::haveRender())
-        return;
+        return false;
 
     checkAtoms();
     for (int i=0; root_prop_ids[i] != 0; ++i) {
@@ -373,14 +381,16 @@
                 }
                 XFree(data);
                 if (root_pm != None)
-                    setRootPixmap(screen_num, root_pm);
+                    return setRootPixmap(screen_num, root_pm);
             }
-            break;
+            return false;
         }
     }
+    return false;
 }
 
-void FbPixmap::setRootPixmap(int screen_num, Pixmap pm) {
+// returns whether or not the background was changed
+bool FbPixmap::setRootPixmap(int screen_num, Pixmap pm) {
     if (!m_root_pixmaps) {
         m_root_pixmaps = new Pixmap[ScreenCount(display())];
         for (int i=0; i < ScreenCount(display()); ++i)
@@ -390,7 +400,9 @@
     if (m_root_pixmaps[screen_num] != pm) {
         m_root_pixmaps[screen_num] = pm;
         FbWindow::updatedAlphaBackground(screen_num);
+        return true;
     }
+    return false;
 }
 
 Pixmap FbPixmap::getRootPixmap(int screen_num, bool force_update) {
--- fluxbox-1.0~rc3/src/FbTk/FbPixmap.hh
+++ fluxbox-1.0~rc3/src/FbTk/FbPixmap.hh
@@ -70,8 +70,8 @@
     inline unsigned int depth() const { return m_depth; }
 
     static Pixmap getRootPixmap(int screen_num, bool force_update=false);
-    static void setRootPixmap(int screen_num, Pixmap pm);
-    static void rootwinPropertyNotify(int screen_num, Atom atom);
+    static bool setRootPixmap(int screen_num, Pixmap pm);
+    static bool rootwinPropertyNotify(int screen_num, Atom atom);
 
     void create(Drawable src,
                 unsigned int width, unsigned int height,

Attachment: signature.asc
Description: Digital signature

Reply via email to