Репозитории ALT
Группа :: Науки/Математика
Пакет: xaos
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: XaoS-3.1-mdk-x11shm-errors.patch
Скачать
Скачать
--- ./src/ui/ui-drv/x11/xlib.c.gege 2003-04-10 22:06:21.000000000 +0200
+++ ./src/ui/ui-drv/x11/xlib.c 2003-04-10 22:20:26.000000000 +0200
@@ -97,6 +97,18 @@
}
#ifdef MITSHM
+// Trap SHM errors
+static Bool shm_error = False;
+static int (*old_error_handler)(Display *, XErrorEvent *);
+
+static int error_handler(Display *d, XErrorEvent *e)
+{
+ if (e->error_code == BadAccess) {
+ shm_error = True;
+ return 0;
+ } else
+ return old_error_handler(d, e);
+}
int
alloc_shm_image (xdisplay * new)
{
@@ -155,10 +167,15 @@
(char *) new->image[i]->data;
new->xshminfo[i].readOnly = True;
+ /* Try to attach SHM image, catching errors */
+ shm_error = False;
+ old_error_handler = XSetErrorHandler(error_handler);
+
new->SharedMemFlag =
XShmAttach (new->display, &new->xshminfo[i]);
XSync (new->display, False);
- if (!new->SharedMemFlag)
+ XSetErrorHandler(old_error_handler);
+ if (!new->SharedMemFlag || shm_error)
{
XDestroyImage (new->image[i]);
new->image[i] = (XImage *) NULL;