patches/qt47/qt-471-shm.diff
author jurikm
Sun, 12 Feb 2012 14:04:10 +0000
changeset 8245 383896da4129
parent 3064 6f76bdc54801
permissions -rw-r--r--
SFEsauerbraten.spec: add IPS package name
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3064
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
     1
--- src/gui/image/qnativeimage.cpp.orig	2010-06-01 22:03:15.000000000 -0400
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
     2
+++ src/gui/image/qnativeimage.cpp	2010-07-11 13:21:55.000000000 -0400
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
     3
@@ -176,29 +176,26 @@ QNativeImage::QNativeImage(int width, in
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
     4
                             IPC_CREAT | 0777);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
     5
     ok = xshminfo.shmid != -1;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
     6
     if (ok) {
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
     7
-        xshmimg->data = (char*)shmat(xshminfo.shmid, 0, 0);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
     8
-        xshminfo.shmaddr = xshmimg->data;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
     9
-        if (shmctl(xshminfo.shmid, IPC_RMID, 0) == -1)
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    10
-            qWarning() << "Error while marking the shared memory segment to be destroyed";
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    11
+        xshmimg->data = xshminfo.shmaddr = (char*)shmat(xshminfo.shmid, 0, 0);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    12
         ok = (xshminfo.shmaddr != (char*)-1);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    13
         if (ok)
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    14
             image = QImage((uchar *)xshmimg->data, width, height, format);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    15
     }
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    16
     xshminfo.readOnly = false;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    17
-    if (ok)
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    18
+    if (ok) {
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    19
         ok = XShmAttach(X11->display, &xshminfo);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    20
+	XSync(X11->display, false);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    21
+    }
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    22
+    if (shmctl(xshminfo.shmid, IPC_RMID, 0) == -1)
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    23
+	qWarning() << "QNativeImage: Error marking the shared memory segment to be destroyed";
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    24
     if (!ok) {
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    25
-        qWarning() << "QNativeImage: Unable to attach to shared memory segment.";
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    26
-        if (xshmimg->data) {
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    27
-            free(xshmimg->data);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    28
-            xshmimg->data = 0;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    29
-        }
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    30
+        qWarning() << "QNativeImage: X server was unable to attach to shared memory segment.";
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    31
         XDestroyImage(xshmimg);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    32
+	XSync(X11->display, false);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    33
+	xshmimg->data = 0;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    34
         xshmimg = 0;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    35
-        if (xshminfo.shmaddr)
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    36
+        if (xshminfo.shmaddr != (char*)-1)
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    37
             shmdt(xshminfo.shmaddr);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    38
-        if (xshminfo.shmid != -1)
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    39
-            shmctl(xshminfo.shmid, IPC_RMID, 0);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    40
         return;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    41
     }
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    42
     if (X11->use_mitshm_pixmaps) {
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    43
@@ -221,11 +218,12 @@ QNativeImage::~QNativeImage()
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    44
         xshmpm = 0;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    45
     }
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    46
     XShmDetach(X11->display, &xshminfo);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    47
-    xshmimg->data = 0;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    48
     XDestroyImage(xshmimg);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    49
+    XSync(X11->display, false);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    50
+    xshmimg->data = 0;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    51
     xshmimg = 0;
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    52
-    shmdt(xshminfo.shmaddr);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    53
-    shmctl(xshminfo.shmid, IPC_RMID, 0);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    54
+    if (xshminfo.shmaddr != (char*)-1)
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    55
+	shmdt(xshminfo.shmaddr);
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    56
 }
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    57
 
6f76bdc54801 experimental/SFEqt47: add 40 patches enabling WebKit etc.; create qmake.conf for solaris-cc-stdcxx
viskov
parents:
diff changeset
    58
 QImage::Format QNativeImage::systemFormat()