m_shmInfo.shmid = shmget(IPC_PRIVATE, m_xImage->bytes_per_line * m_xImage->height, IPC_CREAT | 0666);
if (m_shmInfo.shmid == -1) {
XDestroyImage(m_xImage);
+ m_xImage = NULL;
fprintf(stderr, "Error getting the shared image info\n");
return;
}
shmdt(m_shmInfo.shmaddr);
shmctl(m_shmInfo.shmid, IPC_RMID, 0);
XDestroyImage(m_xImage);
+ m_xImage = NULL;
return;
}
return;
}
+ if (!m_xImage)
+ return;
+
XGrabServer(g_display);
if (!XShmGetImage(g_display, (Drawable)m_platformSurfaceID, m_xImage, 0, 0, 0xffffffff))
fprintf(stderr, "Error Getting ShmGetImage\n");
std::swap(m_xImage->data[i], m_xImage->data[i + 2]);
}
- void* xImageData() { return m_xImage->data; }
+ void* xImageData() { return m_xImage ? m_xImage->data : 0; }
void swapBuffers() { }
IntSize size() const { return m_size; }