Fix memory leak when xinerama is enabled (normally hit only once).
SVN revision: 32319
This commit is contained in:
parent
45a497b5c3
commit
336498de43
15
src/screen.c
15
src/screen.c
|
@ -64,20 +64,25 @@ ScreenInit(void)
|
||||||
n_screens = 0; /* Causes reconfiguration */
|
n_screens = 0; /* Causes reconfiguration */
|
||||||
|
|
||||||
#ifdef HAVE_XINERAMA
|
#ifdef HAVE_XINERAMA
|
||||||
XineramaScreenInfo *screens = NULL;
|
XineramaScreenInfo *screens;
|
||||||
int num_screens = 0;
|
int i, num_screens;
|
||||||
int i;
|
|
||||||
|
|
||||||
if (Mode.wm.window)
|
if (Mode.wm.window)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Mode.display.xinerama_active = XineramaIsActive(disp);
|
Mode.display.xinerama_active = XineramaIsActive(disp);
|
||||||
if (Mode.display.xinerama_active)
|
if (!Mode.display.xinerama_active)
|
||||||
screens = XineramaQueryScreens(disp, &num_screens);
|
return;
|
||||||
|
|
||||||
|
num_screens = 0;
|
||||||
|
screens = XineramaQueryScreens(disp, &num_screens);
|
||||||
|
|
||||||
for (i = 0; i < num_screens; i++)
|
for (i = 0; i < num_screens; i++)
|
||||||
ScreenAdd(0, screens[i].screen_number, screens[i].x_org,
|
ScreenAdd(0, screens[i].screen_number, screens[i].x_org,
|
||||||
screens[i].y_org, screens[i].width, screens[i].height);
|
screens[i].y_org, screens[i].width, screens[i].height);
|
||||||
|
|
||||||
|
if (screens)
|
||||||
|
XFree(screens);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue