pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/43178: Qt and Gtk applications don't start correctly on amd64/ WindowMaker environment



>Number:         43178
>Category:       pkg
>Synopsis:       Qt and Gtk applications don't start correctly on amd64/ 
>WindowMaker environment
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Apr 19 12:10:00 +0000 2010
>Originator:     Helge Muehlmeier
>Release:        current
>Organization:
privat
>Environment:
NetBSD wopr.fritz.box 5.99.27 NetBSD 5.99.27 (GENERIC) #0: Tue Apr 13 13:53:06 
UTC 2010  
builds%b8.netbsd.org@localhost:/home/builds/ab/HEAD/amd64/201004130000Z-obj/home/builds/ab/HEAD/src/sys/arch/amd64/compile/GENERIC
 amd64
>Description:
Some applications like lyx, eric4 or wxMaxima start (in background and maybe 
show their GUI) but aren't usable. You can't klick on menu items or do 
something useful with that programs.
AFAIK only amd64 is affected.

As discussed on 

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=311563

it is a bug in WindowMaker (current releases are fixed but not stable version 
0.92.0).


>How-To-Repeat:
Install windowmaker from pkgsrc on amd64 arch and install an application like 
lyx, eric4 or wxMaxima.

Start WindowMaker and try to use that applications.
>Fix:
As discussed on http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=311563 there 
is a patch for WindowMaker (needed for stable version 0.92.0).

I added the following patch to wm/windowmaker:

$NetBSD$
#This patch avoid some application trouble (qt and gtk apps are affected i.g. 
lyx, eric4 or wxMaxima) on amd64 systems.


--- src/wmspec.c.orig   2005-05-15 16:41:09.000000000 +0000
+++ src/wmspec.c
@@ -35,6 +35,7 @@
 
 #include <X11/Xlib.h>
 #include <X11/Xatom.h>
+#include <X11/Xarch.h>
 #include <string.h>
 
 #include "WindowMaker.h"
@@ -322,15 +323,15 @@ setSupportedHints(WScreen *scr)
 void
 wNETWMUpdateDesktop(WScreen *scr)
 {
-    CARD32 *views, sizes[2];
+    long *views, sizes[2];
     int count, i;
 
     if (scr->workspace_count==0)
         return;
 
     count = scr->workspace_count * 2;
-    views = wmalloc(sizeof(CARD32) * count);
-    /*memset(views, 0, sizeof(CARD32) * count);*/
+    views = wmalloc(sizeof(long) * count);
+    /*memset(views, 0, sizeof(long) * count);*/
 
 #ifdef VIRTUAL_DESKTOP
     sizes[0] = scr->workspaces[scr->current_workspace]->width;
@@ -370,7 +371,7 @@ wNETWMGetCurrentDesktopFromHint(WScreen 
                                0, 1, &count);
     if (prop)
     {
-        int desktop= *(CARD32*)prop;
+       int desktop= *(long*)prop;
         XFree(prop);
         return desktop;
     }
@@ -487,7 +488,7 @@ updateIconImage(WScreen *scr, WWindow *w
 static void
 updateShowDesktop(WScreen * scr, Bool show)
 {
-    CARD32 foo;
+    long foo;
 
     foo = (show == True);
     XChangeProperty(dpy, scr->root_win, net_showing_desktop, XA_CARDINAL, 32,
@@ -660,7 +661,7 @@ wNETWMUpdateActions(WWindow *wwin, Bool 
 void
 wNETWMUpdateWorkarea(WScreen *scr, WArea usableArea)
 {
-    CARD32 *area;
+    long *area;
     int count, i;
 
     /* XXX: not Xinerama compatible,
@@ -670,7 +671,7 @@ wNETWMUpdateWorkarea(WScreen *scr, WArea
         return;

     count = scr->workspace_count * 4;
-    area = wmalloc(sizeof(CARD32) * count);
+    area = wmalloc(sizeof(long) * count);
     for (i=0; i<scr->workspace_count; i++) {
         area[4*i + 0] = usableArea.x1;
         area[4*i + 1] = usableArea.y1;
@@ -793,7 +794,7 @@ updateClientListStacking(WScreen *scr, W
 static void
 updateWorkspaceCount(WScreen *scr) /* changeable */
 {
-    CARD32 count;
+    long count;
 
     count = scr->workspace_count;
 
@@ -805,7 +806,7 @@ updateWorkspaceCount(WScreen *scr) /* ch
 static void
 updateCurrentWorkspace(WScreen *scr) /* changeable */
 {
-    CARD32 count;
+    long count;
 
     count = scr->current_workspace;
 
@@ -852,7 +853,7 @@ updateFocusHint(WScreen *scr, WWindow *w
 static void
 updateWorkspaceHint(WWindow *wwin, Bool fake, Bool del)
 {
-    CARD32 l;
+    long l;
 
     if (del) {
         XDeleteProperty(dpy, wwin->client_win, net_wm_desktop);



Home | Main Index | Thread Index | Old Index