Deal with XineramaQueryScreens failure.

The call to XineramaQueryScreens may return NULL in some cases. This patch
tries to deal with that somehow.

Signed-off-by: Tomas Janousek <tomi@nomi.cz>
This commit is contained in:
Tomas Janousek 2007-07-09 16:45:47 +02:00
parent c702d683e0
commit 8c3f2a8e03

View file

@ -1955,6 +1955,7 @@ void BScreen::initXinerama() {
Display *display = FbTk::App::instance()->display();
if (!XineramaIsActive(display)) {
notactive:
#ifdef DEBUG
cerr<<"BScreen::initXinerama(): dont have Xinerama"<<endl;
#endif // DEBUG
@ -1973,6 +1974,17 @@ void BScreen::initXinerama() {
XineramaScreenInfo *screen_info;
int number;
screen_info = XineramaQueryScreens(display, &number);
/* The call may have actually failed. If this is the first time we init
* Xinerama, fall back to turning it off. If not, pretend nothing
* happened -- another event will tell us and it will work then. */
if (!screen_info) {
if (m_xinerama_headinfo)
return;
else
goto notactive;
}
if (m_xinerama_headinfo)
delete [] m_xinerama_headinfo;
m_xinerama_headinfo = new XineramaHeadInfo[number];