Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37828557
en ru br
Репозитории ALT
S:4.2.1-alt1
5.1: 3.5-alt1
4.1: 3.3-alt1
4.0: 3.2.3-alt1
3.0: 3.1-alt4
www.altlinux.org/Changes

Группа :: Науки/Математика
Пакет: 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;
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin