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

Re: problem with pixmaps for workspaces



On Tue, 27 Oct 2009 18:04:59 -0300
Luiz Pedro <luiz-pedro@bol.com.br> wrote:

> I had a similar problem. Debugging wmaker, I discovered that this 
> happens when the option SmoothWorkspaceBack is true. I turned it to 
> false, and the wmaker returned to normal.
> Try this, maybe it's the same problem...
> 
> Valmor de Almeida escreveu:
> > Hello,
> >
> > I am currently unable to have my workspaces using different background
> > images. The problem seems to be this line in the
> > ~/GNUstep/Defaults/WindowMaker file
> >
> > WorkspaceSpecificBack = ((spixmap, thetismoon2k721600.jpg, white));
> >
> > It causes wmaker to issue a Fatal Error: Window Maker received signal 6.
> >  The line
> >
> > WorkspaceBack = (spixmap, "macosx-gentoo-1600x1200.jpg", white);
> >
> > does work and puts the same image in all workspaces.
> >
> > Does anyone know what is going on. This problem appeared after an
> > upgrade from xorg 1.5 to 1.6. There was also an upgrade on windowmaker
> > but I am not sure about the changes. I use gentoo with its ebuild of
> > windowmaker.
> >
> > Thanks for any inputs.
> >
> > --
> > Valmor
> >
> > PS: btw I use wmakerconf to setup the workspace pixmap background.
> >
> >
> >   
> 
> 
> -- 
> To unsubscribe, send mail to wmaker-user-unsubscribe@lists.windowmaker.info.

I've tried to duplicate this problem on my system and am unable to do so. I've tried with both
SmoothWorkspaceBack = YES
SmoothWorkspaceBack = NO
and even when using an image much larger than my screen -still no problems.

Are you both sure you are using the proper syntax in your ~/GNUstep/WindowMaker file?
You must have Workspaceback set to something, as well as have entries for each extra workspace, something like this:
WorkspaceBack = (solid, red);
WorkspaceSpecificBack = ((cpixmap, GERBER.jpg, gray), ());
(The empty parentheses for the second wrokspace mean to use what is set for WorkspaceBack.

If that still doesn't work, then maybe this small patch will help. I should explain that I am using my own source tree of wmaker which does not include all of the changes from Carlos branch. Specifically, I have not made the coding-style changes.
On comparing the code in my tree with that from Carlos tree, I was able to find a very small difference in a couple of files which are related to the WorkspaceBack and WorkspaceSpecificBack. the files affected are src/defaults.c and src/workspace.c
In both cases there is a slight difference in the syntax for addition. To be honest, it doesn't really look like it would make a difference, but I don't have any other clue so you might try applying the attached patch and see if that fixes it.
The same bug was reported since several years ago and had been fixed in src/misc.c, but that fix conflicts with a buffer-overflow patch which both Carlos and I use in our sources, so that would not seems to be the answer.

Here is the patch in-line, but I am attaching it also:
--- ./src/defaults.c.01	2009-09-09 14:29:33.000000000 +0200
+++ ./src/defaults.c	2009-10-28 19:53:13.000000000 +0100
@@ -2982,11 +2982,11 @@
 		if (val && WMIsPLArray(val) && WMGetPropListItemCount(val) > 0) {
 			str = WMGetPropListDescription(val, False);
 
-			SendHelperMessage(scr, 'S', i + 1, str);
+			SendHelperMessage(scr, 'S', i+1, str);
 
 			wfree(str);
 		} else {
-			SendHelperMessage(scr, 'U', i + 1, NULL);
+			SendHelperMessage(scr, 'U', i+1, NULL);
 		}
 	}
 	sleep(1);
@@ -3008,7 +3008,7 @@
 			if (str) {
 				SendHelperMessage(scr, 'S', 0, str);
 				wfree(str);
-				SendHelperMessage(scr, 'C', scr->current_workspace + 1, NULL);
+				SendHelperMessage(scr, 'C', scr->current_workspace+1, NULL);
 			} else {
 				SendHelperMessage(scr, 'U', 0, NULL);
 			}
--- ./src/workspace.c.01	2009-09-09 14:29:33.000000000 +0200
+++ ./src/workspace.c	2009-10-28 19:51:59.000000000 +0100
@@ -448,9 +448,9 @@
 	if (workspace >= MAX_WORKSPACES || workspace < 0)
 		return;
 
-	SendHelperMessage(scr, 'C', workspace + 1, NULL);
+	SendHelperMessage(scr, 'C', workspace+1, NULL);
 
-	if (workspace > scr->workspace_count - 1) {
+	if (workspace > scr->workspace_count-1) {
 		wWorkspaceMake(scr, workspace - scr->workspace_count + 1);
 	}
 

The only difference is a bit of whitespace, but its' worth a try. No problems here...
Gilbert Ashley

Attachment: WorkspaceSpecificBack-fix.diff
Description: Binary data