wmpager: fix memory leaks pointed out by valgrind
This commit is contained in:
		
							parent
							
								
									aca75d2e2d
								
							
						
					
					
						commit
						2f27664839
					
				
					 1 changed files with 38 additions and 30 deletions
				
			
		| 
						 | 
					@ -27,8 +27,6 @@
 | 
				
			||||||
#define AUTHOR "Bruno Essmann <essmann@users.sourceforge.net>"
 | 
					#define AUTHOR "Bruno Essmann <essmann@users.sourceforge.net>"
 | 
				
			||||||
#define APPLICATION "wmpager"
 | 
					#define APPLICATION "wmpager"
 | 
				
			||||||
#define VERSION "1.2"
 | 
					#define VERSION "1.2"
 | 
				
			||||||
#define BUILD_REV "$Revision: 1.4 $"
 | 
					 | 
				
			||||||
#define BUILD_DATE "$Date: 2002/08/16 17:22:26 $"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define XA_NET_NUMBER_OF_DESKTOPS "_NET_NUMBER_OF_DESKTOPS"
 | 
					#define XA_NET_NUMBER_OF_DESKTOPS "_NET_NUMBER_OF_DESKTOPS"
 | 
				
			||||||
#define XA_NET_CURRENT_DESKTOP "_NET_CURRENT_DESKTOP"
 | 
					#define XA_NET_CURRENT_DESKTOP "_NET_CURRENT_DESKTOP"
 | 
				
			||||||
| 
						 | 
					@ -159,7 +157,7 @@ int main (int nArgc, char** szArgv) {
 | 
				
			||||||
		} else if (strcmp("-t", szArgv[i]) == 0 || strcmp("--theme", szArgv[i]) == 0) {
 | 
							} else if (strcmp("-t", szArgv[i]) == 0 || strcmp("--theme", szArgv[i]) == 0) {
 | 
				
			||||||
			i+= 1;
 | 
								i+= 1;
 | 
				
			||||||
			if (i < nArgc) {
 | 
								if (i < nArgc) {
 | 
				
			||||||
				szTheme= szArgv[i];
 | 
									szTheme= strdup(szArgv[i]);
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				fprintf(stderr, "%s: theme argument expected for '%s'\n\n", getApplicationName(), szArgv[i-1]);
 | 
									fprintf(stderr, "%s: theme argument expected for '%s'\n\n", getApplicationName(), szArgv[i-1]);
 | 
				
			||||||
				usage(0);
 | 
									usage(0);
 | 
				
			||||||
| 
						 | 
					@ -254,13 +252,7 @@ void usage (int bVerbose) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void info () {
 | 
					void info () {
 | 
				
			||||||
	char* szRev= strdup(BUILD_REV);
 | 
						fprintf(stdout, "%s %s\n\n", APPLICATION, VERSION);
 | 
				
			||||||
	char* szDate= strdup(BUILD_DATE);
 | 
					 | 
				
			||||||
	szRev= &szRev[11];
 | 
					 | 
				
			||||||
	szRev[strlen(szRev) - 2]= '\0';
 | 
					 | 
				
			||||||
	szDate= &szDate[7];
 | 
					 | 
				
			||||||
	szDate[strlen(szDate) - 2]= '\0';
 | 
					 | 
				
			||||||
	fprintf(stdout, "%s %s (build %s, %s)\n\n", APPLICATION, VERSION, szRev, szDate);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
| 
						 | 
					@ -373,8 +365,7 @@ void initWindow (int nArgc, char** szArgv) {
 | 
				
			||||||
	XSizeHints *xsizehints;
 | 
						XSizeHints *xsizehints;
 | 
				
			||||||
	XWMHints* xwmhints;
 | 
						XWMHints* xwmhints;
 | 
				
			||||||
	XClassHint* xclasshint;
 | 
						XClassHint* xclasshint;
 | 
				
			||||||
	XTextProperty* xtApplication;
 | 
						XTextProperty xtApplication;
 | 
				
			||||||
	XGCValues xgcMain;
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if (isVerbose()) {
 | 
						if (isVerbose()) {
 | 
				
			||||||
		fprintf(stdout, "[%8ld] initializing application window\n", currentTimeMillis());
 | 
							fprintf(stdout, "[%8ld] initializing application window\n", currentTimeMillis());
 | 
				
			||||||
| 
						 | 
					@ -419,14 +410,18 @@ void initWindow (int nArgc, char** szArgv) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	XSetWMNormalHints(display, _wMain, xsizehints);
 | 
						XSetWMNormalHints(display, _wMain, xsizehints);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	xtApplication= (XTextProperty*) malloc(sizeof(XTextProperty));
 | 
						XFree(xclasshint);
 | 
				
			||||||
	if (XStringListToTextProperty(&szApplicationName, 1, xtApplication) == 0) {
 | 
						XFree(xwmhints);
 | 
				
			||||||
 | 
						XFree(xsizehints);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (XStringListToTextProperty(&szApplicationName, 1, &xtApplication) == 0) {
 | 
				
			||||||
		fprintf(stderr, "Cannot set window title.\n");
 | 
							fprintf(stderr, "Cannot set window title.\n");
 | 
				
			||||||
		exit(-1);
 | 
							exit(-1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	XSetWMName(display, _wMain, xtApplication);
 | 
						XSetWMName(display, _wMain, &xtApplication);
 | 
				
			||||||
 | 
						XFree(xtApplication.value);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	_gcMain= XCreateGC(display, _wMain, (GCForeground | GCBackground), &xgcMain);
 | 
						_gcMain= XCreateGC(display, _wMain, 0L, NULL);
 | 
				
			||||||
	if (_gcMain == NULL) {
 | 
						if (_gcMain == NULL) {
 | 
				
			||||||
		fprintf(stderr, "Cannot create graphics context.\n");
 | 
							fprintf(stderr, "Cannot create graphics context.\n");
 | 
				
			||||||
		exit(-1);
 | 
							exit(-1);
 | 
				
			||||||
| 
						 | 
					@ -453,7 +448,6 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
	Window wRoot= getRootWindow();
 | 
						Window wRoot= getRootWindow();
 | 
				
			||||||
	Window wMain= getMainWindow();
 | 
						Window wMain= getMainWindow();
 | 
				
			||||||
	Window wIcon= getIconWindow();
 | 
						Window wIcon= getIconWindow();
 | 
				
			||||||
	XGCValues xgc, xgcWindow;
 | 
					 | 
				
			||||||
	Pixmap pOpaque, pTransparent, pMask;
 | 
						Pixmap pOpaque, pTransparent, pMask;
 | 
				
			||||||
	char* mask= (char*) malloc(512);
 | 
						char* mask= (char*) malloc(512);
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
| 
						 | 
					@ -484,7 +478,7 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
		exit(-1);
 | 
							exit(-1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gc= XCreateGC(display, pMask, (GCForeground | GCBackground), &xgc);
 | 
						gc= XCreateGC(display, pMask, 0L, NULL);
 | 
				
			||||||
	if (gc == NULL) {
 | 
						if (gc == NULL) {
 | 
				
			||||||
		fprintf(stderr, "%s: couldn't create window mask (mask graphics).\n", getApplicationName());
 | 
							fprintf(stderr, "%s: couldn't create window mask (mask graphics).\n", getApplicationName());
 | 
				
			||||||
		exit(-1);
 | 
							exit(-1);
 | 
				
			||||||
| 
						 | 
					@ -495,6 +489,7 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
		XCopyArea(display, pOpaque, pMask, gc, nButtonX, nButtonY, getButtonWidth(), getButtonHeight(), nButtonX, nButtonY);
 | 
							XCopyArea(display, pOpaque, pMask, gc, nButtonX, nButtonY, getButtonWidth(), getButtonHeight(), nButtonX, nButtonY);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						free(mask);
 | 
				
			||||||
	XFreePixmap(display, pOpaque);
 | 
						XFreePixmap(display, pOpaque);
 | 
				
			||||||
	XFreePixmap(display, pTransparent);
 | 
						XFreePixmap(display, pTransparent);
 | 
				
			||||||
	XFreeGC(display, gc);
 | 
						XFreeGC(display, gc);
 | 
				
			||||||
| 
						 | 
					@ -522,7 +517,7 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
		struct stat buf;
 | 
							struct stat buf;
 | 
				
			||||||
		/* check for absolute button theme pathname */
 | 
							/* check for absolute button theme pathname */
 | 
				
			||||||
		if (stat(szButtonTheme, &buf) == -1) {
 | 
							if (stat(szButtonTheme, &buf) == -1) {
 | 
				
			||||||
			char* szNewTheme= (char*) malloc(strlen(szButtonTheme) + 4);
 | 
								char* szNewTheme= (char*) malloc(strlen(szButtonTheme) + 5);
 | 
				
			||||||
			strcpy(szNewTheme, szButtonTheme);
 | 
								strcpy(szNewTheme, szButtonTheme);
 | 
				
			||||||
			strcat(szNewTheme, ".xpm");
 | 
								strcat(szNewTheme, ".xpm");
 | 
				
			||||||
			if (isVerbose()) {
 | 
								if (isVerbose()) {
 | 
				
			||||||
| 
						 | 
					@ -530,6 +525,7 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			/* check for absolute button theme pathname (with .xpm added) */
 | 
								/* check for absolute button theme pathname (with .xpm added) */
 | 
				
			||||||
			if (stat(szNewTheme, &buf) == 0) {
 | 
								if (stat(szNewTheme, &buf) == 0) {
 | 
				
			||||||
 | 
									free(szButtonTheme);
 | 
				
			||||||
				szButtonTheme= szNewTheme;
 | 
									szButtonTheme= szNewTheme;
 | 
				
			||||||
				if (isVerbose()) {
 | 
									if (isVerbose()) {
 | 
				
			||||||
					fprintf(stdout, "[%8ld] initializing button theme '%s'\n", currentTimeMillis(), szButtonTheme);
 | 
										fprintf(stdout, "[%8ld] initializing button theme '%s'\n", currentTimeMillis(), szButtonTheme);
 | 
				
			||||||
| 
						 | 
					@ -540,7 +536,7 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (bCheckAgain && szInstallDir != NULL) {
 | 
							if (bCheckAgain && szInstallDir != NULL) {
 | 
				
			||||||
			char* szNewTheme= (char*) malloc(strlen(szInstallDir) + strlen(szButtonTheme) + 5);
 | 
								char* szNewTheme= (char*) malloc(strlen(szInstallDir) + strlen(szButtonTheme) + 6);
 | 
				
			||||||
			strcpy(szNewTheme, szInstallDir);
 | 
								strcpy(szNewTheme, szInstallDir);
 | 
				
			||||||
			if (szNewTheme[strlen(szNewTheme) - 1] != '/') {
 | 
								if (szNewTheme[strlen(szNewTheme) - 1] != '/') {
 | 
				
			||||||
				strcat(szNewTheme, "/");
 | 
									strcat(szNewTheme, "/");
 | 
				
			||||||
| 
						 | 
					@ -548,6 +544,7 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
			strcat(szNewTheme, szButtonTheme);
 | 
								strcat(szNewTheme, szButtonTheme);
 | 
				
			||||||
			if (stat(szNewTheme, &buf) == 0) {
 | 
								if (stat(szNewTheme, &buf) == 0) {
 | 
				
			||||||
				bCheckAgain= 0;
 | 
									bCheckAgain= 0;
 | 
				
			||||||
 | 
									free(szButtonTheme);
 | 
				
			||||||
				szButtonTheme= szNewTheme;
 | 
									szButtonTheme= szNewTheme;
 | 
				
			||||||
				if (isVerbose()) {
 | 
									if (isVerbose()) {
 | 
				
			||||||
					fprintf(stdout, "[%8ld] initializing button theme '%s'\n", currentTimeMillis(), szButtonTheme);
 | 
										fprintf(stdout, "[%8ld] initializing button theme '%s'\n", currentTimeMillis(), szButtonTheme);
 | 
				
			||||||
| 
						 | 
					@ -556,10 +553,13 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
				strcat(szNewTheme, ".xpm");
 | 
									strcat(szNewTheme, ".xpm");
 | 
				
			||||||
				if (stat(szNewTheme, &buf) == 0) {
 | 
									if (stat(szNewTheme, &buf) == 0) {
 | 
				
			||||||
					bCheckAgain= 0;
 | 
										bCheckAgain= 0;
 | 
				
			||||||
 | 
										free(szButtonTheme);
 | 
				
			||||||
					szButtonTheme= szNewTheme;
 | 
										szButtonTheme= szNewTheme;
 | 
				
			||||||
					if (isVerbose()) {
 | 
										if (isVerbose()) {
 | 
				
			||||||
						fprintf(stdout, "[%8ld] initializing button theme '%s'\n", currentTimeMillis(), szButtonTheme);
 | 
											fprintf(stdout, "[%8ld] initializing button theme '%s'\n", currentTimeMillis(), szButtonTheme);
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										free(szNewTheme);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -568,7 +568,7 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
			char* szHome= (char*) getenv("HOME");
 | 
								char* szHome= (char*) getenv("HOME");
 | 
				
			||||||
			if (szHome) {
 | 
								if (szHome) {
 | 
				
			||||||
				/* one really shouldn't copy&paste but hey this is a q&d tool */
 | 
									/* one really shouldn't copy&paste but hey this is a q&d tool */
 | 
				
			||||||
				char* szNewTheme= (char*) malloc(strlen(szHome) + strlen(szButtonTheme) + strlen(WMPAGER_USER_DIR) + 5);
 | 
									char* szNewTheme= (char*) malloc(strlen(szHome) + strlen(szButtonTheme) + strlen(WMPAGER_USER_DIR) + 6);
 | 
				
			||||||
				strcpy(szNewTheme, szHome);
 | 
									strcpy(szNewTheme, szHome);
 | 
				
			||||||
				if (szNewTheme[strlen(szNewTheme) - 1] != '/') {
 | 
									if (szNewTheme[strlen(szNewTheme) - 1] != '/') {
 | 
				
			||||||
					strcat(szNewTheme, "/");
 | 
										strcat(szNewTheme, "/");
 | 
				
			||||||
| 
						 | 
					@ -577,6 +577,7 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
				strcat(szNewTheme, szButtonTheme);
 | 
									strcat(szNewTheme, szButtonTheme);
 | 
				
			||||||
				if (stat(szNewTheme, &buf) == 0) {
 | 
									if (stat(szNewTheme, &buf) == 0) {
 | 
				
			||||||
					bCheckAgain= 0;
 | 
										bCheckAgain= 0;
 | 
				
			||||||
 | 
										free(szButtonTheme);
 | 
				
			||||||
					szButtonTheme= szNewTheme;
 | 
										szButtonTheme= szNewTheme;
 | 
				
			||||||
					if (isVerbose()) {
 | 
										if (isVerbose()) {
 | 
				
			||||||
						fprintf(stdout, "[%8ld] initializing button theme '%s'\n", currentTimeMillis(), szButtonTheme);
 | 
											fprintf(stdout, "[%8ld] initializing button theme '%s'\n", currentTimeMillis(), szButtonTheme);
 | 
				
			||||||
| 
						 | 
					@ -585,10 +586,13 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
					strcat(szNewTheme, ".xpm");
 | 
										strcat(szNewTheme, ".xpm");
 | 
				
			||||||
					if (stat(szNewTheme, &buf) == 0) {
 | 
										if (stat(szNewTheme, &buf) == 0) {
 | 
				
			||||||
						bCheckAgain= 0;
 | 
											bCheckAgain= 0;
 | 
				
			||||||
 | 
											free(szButtonTheme);
 | 
				
			||||||
						szButtonTheme= szNewTheme;
 | 
											szButtonTheme= szNewTheme;
 | 
				
			||||||
						if (isVerbose()) {
 | 
											if (isVerbose()) {
 | 
				
			||||||
							fprintf(stdout, "[%8ld] initializing button theme '%s'\n", currentTimeMillis(), szButtonTheme);
 | 
												fprintf(stdout, "[%8ld] initializing button theme '%s'\n", currentTimeMillis(), szButtonTheme);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
 | 
										} else {
 | 
				
			||||||
 | 
											free(szNewTheme);
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -601,6 +605,8 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
			fprintf(stderr, "%s: couldn't read button theme '%s'.\n", getApplicationName(), szButtonTheme);
 | 
								fprintf(stderr, "%s: couldn't read button theme '%s'.\n", getApplicationName(), szButtonTheme);
 | 
				
			||||||
			exit(-1);
 | 
								exit(-1);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							free(szButtonTheme);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (isVerbose()) {
 | 
						if (isVerbose()) {
 | 
				
			||||||
| 
						 | 
					@ -617,8 +623,8 @@ void initWindowMask (char* szInstallDir, char* szButtonTheme) {
 | 
				
			||||||
		exit(-1);
 | 
							exit(-1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_gcWindow= XCreateGC(_display, _pWindow, (GCForeground | GCBackground), &xgcWindow);
 | 
						_gcWindow= XCreateGC(_display, _pWindow, 0L, NULL);
 | 
				
			||||||
	if (gc == NULL) {
 | 
						if (_gcWindow == NULL) {
 | 
				
			||||||
		fprintf(stderr, "%s: couldn't create screen buffer graphics.\n", getApplicationName());
 | 
							fprintf(stderr, "%s: couldn't create screen buffer graphics.\n", getApplicationName());
 | 
				
			||||||
		exit(-1);
 | 
							exit(-1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -690,6 +696,7 @@ void getWindowOrigin (Window w, int* nX, int* nY) {
 | 
				
			||||||
void loop () {
 | 
					void loop () {
 | 
				
			||||||
	Display* display= getDisplay();
 | 
						Display* display= getDisplay();
 | 
				
			||||||
	XEvent event;
 | 
						XEvent event;
 | 
				
			||||||
 | 
						char* atom_name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (isVerbose()) {
 | 
						if (isVerbose()) {
 | 
				
			||||||
		fprintf(stdout, "[%8ld] starting event loop\n", currentTimeMillis());
 | 
							fprintf(stdout, "[%8ld] starting event loop\n", currentTimeMillis());
 | 
				
			||||||
| 
						 | 
					@ -719,7 +726,10 @@ void loop () {
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
				case PropertyNotify:
 | 
									case PropertyNotify:
 | 
				
			||||||
					if (strcmp(XA_NET_CURRENT_DESKTOP, XGetAtomName(getDisplay(), event.xproperty.atom)) == 0) {
 | 
										atom_name = XGetAtomName(getDisplay(), event.xproperty.atom);
 | 
				
			||||||
 | 
										if (atom_name == NULL)
 | 
				
			||||||
 | 
											break;
 | 
				
			||||||
 | 
										if (strcmp(XA_NET_CURRENT_DESKTOP, atom_name) == 0) {
 | 
				
			||||||
						setCurrentScreen(-1);
 | 
											setCurrentScreen(-1);
 | 
				
			||||||
						if (isVerbose()) {
 | 
											if (isVerbose()) {
 | 
				
			||||||
							fprintf(stdout, "[%8ld] new current workspace (%d= %s)\n", 
 | 
												fprintf(stdout, "[%8ld] new current workspace (%d= %s)\n", 
 | 
				
			||||||
| 
						 | 
					@ -727,6 +737,7 @@ void loop () {
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						redrawWindow();
 | 
											redrawWindow();
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
										XFree(atom_name);
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
				case DestroyNotify:
 | 
									case DestroyNotify:
 | 
				
			||||||
					if (isVerbose()) {
 | 
										if (isVerbose()) {
 | 
				
			||||||
| 
						 | 
					@ -947,9 +958,7 @@ void setCurrentScreen (int nCurrentScreen) {
 | 
				
			||||||
		if ((nFormat == 32) && (nItems == 1) && (nBytesAfter == 0)) {
 | 
							if ((nFormat == 32) && (nItems == 1) && (nBytesAfter == 0)) {
 | 
				
			||||||
			nScreen= *(long*) data;
 | 
								nScreen= *(long*) data;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (xaType != None) {
 | 
							XFree(data);
 | 
				
			||||||
			XFree(data);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		_nLastScreen= nScreen;
 | 
							_nLastScreen= nScreen;
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		_nLastScreen= nCurrentScreen;
 | 
							_nLastScreen= nCurrentScreen;
 | 
				
			||||||
| 
						 | 
					@ -977,12 +986,11 @@ void initScreens () {
 | 
				
			||||||
	if ((nFormat == 32) && (nItems == 1) && (nBytesAfter == 0)) {
 | 
						if ((nFormat == 32) && (nItems == 1) && (nBytesAfter == 0)) {
 | 
				
			||||||
		_nScreens= *(long*) data;
 | 
							_nScreens= *(long*) data;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (xaType != None) {
 | 
						XFree(data);
 | 
				
			||||||
		XFree(data);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	XGetTextProperty(getDisplay(), getRootWindow(), &tp, _xaNetDesktopNames);
 | 
						XGetTextProperty(getDisplay(), getRootWindow(), &tp, _xaNetDesktopNames);
 | 
				
			||||||
	Xutf8TextPropertyToTextList(getDisplay(), &tp, &_szScreenNames, &_nDesktopNames);
 | 
						Xutf8TextPropertyToTextList(getDisplay(), &tp, &_szScreenNames, &_nDesktopNames);
 | 
				
			||||||
 | 
						XFree(tp.value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_nLastScreen= -1;
 | 
						_nLastScreen= -1;
 | 
				
			||||||
	setCurrentScreen(-1);
 | 
						setCurrentScreen(-1);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue