Hello community,

here is the log from the commit of package xorgxrdp for openSUSE:Factory 
checked in at 2019-10-14 12:43:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xorgxrdp (Old)
 and      /work/SRC/openSUSE:Factory/.xorgxrdp.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xorgxrdp"

Mon Oct 14 12:43:58 2019 rev:14 rq:738208 version:0.2.11
Mon Oct 14 12:43:20 2019 rev:13 rq:738172 version:0.2.11

Changes:
--------
--- /work/SRC/openSUSE:Factory/xorgxrdp/xorgxrdp.changes        2019-06-13 
23:06:23.323192841 +0200
+++ /work/SRC/openSUSE:Factory/.xorgxrdp.new.2352/xorgxrdp.changes      
2019-10-14 12:44:08.298286616 +0200
@@ -1,0 +2,12 @@
+Sat Oct 12 10:43:24 UTC 2019 - Felix Zhang <[email protected]>
+
+- Update to version 0.2.11 (jsc#9612)
+  + Fix crash on reconnect when monitors change #121 #147
+
+-------------------------------------------------------------------
+Sat Oct 12 10:43:24 UTC 2019 - Felix Zhang <[email protected]>
+
+- Update to version 0.2.11 (jsc#SLE-9612)
+  + Fix crash on reconnect when monitors change #121 #147
+
+-------------------------------------------------------------------

Old:
----
  xorgxrdp-0.2.10.tar.gz
  xorgxrdp-0.2.10.tar.gz.asc

New:
----
  xorgxrdp-0.2.11.tar.gz
  xorgxrdp-0.2.11.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xorgxrdp.spec ++++++
--- /var/tmp/diff_new_pack.OMuGn1/_old  2019-10-14 12:44:09.206284241 +0200
+++ /var/tmp/diff_new_pack.OMuGn1/_new  2019-10-14 12:44:09.206284241 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           xorgxrdp
-Version:        0.2.10
+Version:        0.2.11
 Release:        0
 Summary:        Xorg drivers for xrdp
 License:        X11

++++++ xorgxrdp-0.2.10.tar.gz -> xorgxrdp-0.2.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorgxrdp-0.2.10/README.md 
new/xorgxrdp-0.2.11/README.md
--- old/xorgxrdp-0.2.10/README.md       2019-05-30 08:05:34.000000000 +0200
+++ new/xorgxrdp-0.2.11/README.md       2019-08-16 03:14:04.000000000 +0200
@@ -1,6 +1,6 @@
 [![Build 
Status](https://travis-ci.org/neutrinolabs/xorgxrdp.svg?branch=devel)](https://travis-ci.org/neutrinolabs/xorgxrdp)
 
-*Current Version:* 0.2.10
+*Current Version:* 0.2.11
 
 # xorgxrdp
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorgxrdp-0.2.10/configure 
new/xorgxrdp-0.2.11/configure
--- old/xorgxrdp-0.2.10/configure       2019-05-30 08:06:20.000000000 +0200
+++ new/xorgxrdp-0.2.11/configure       2019-08-16 03:15:33.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for xorgxrdp 0.2.10.
+# Generated by GNU Autoconf 2.69 for xorgxrdp 0.2.11.
 #
 # Report bugs to <[email protected]>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='xorgxrdp'
 PACKAGE_TARNAME='xorgxrdp'
-PACKAGE_VERSION='0.2.10'
-PACKAGE_STRING='xorgxrdp 0.2.10'
+PACKAGE_VERSION='0.2.11'
+PACKAGE_STRING='xorgxrdp 0.2.11'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1338,7 +1338,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures xorgxrdp 0.2.10 to adapt to many kinds of systems.
+\`configure' configures xorgxrdp 0.2.11 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1408,7 +1408,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of xorgxrdp 0.2.10:";;
+     short | recursive ) echo "Configuration of xorgxrdp 0.2.11:";;
    esac
   cat <<\_ACEOF
 
@@ -1532,7 +1532,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-xorgxrdp configure 0.2.10
+xorgxrdp configure 0.2.11
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1810,7 +1810,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by xorgxrdp $as_me 0.2.10, which was
+It was created by xorgxrdp $as_me 0.2.11, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2684,7 +2684,7 @@
 
 # Define the identity of the package.
  PACKAGE='xorgxrdp'
- VERSION='0.2.10'
+ VERSION='0.2.11'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -13533,7 +13533,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by xorgxrdp $as_me 0.2.10, which was
+This file was extended by xorgxrdp $as_me 0.2.11, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13599,7 +13599,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-xorgxrdp config.status 0.2.10
+xorgxrdp config.status 0.2.11
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorgxrdp-0.2.10/configure.ac 
new/xorgxrdp-0.2.11/configure.ac
--- old/xorgxrdp-0.2.10/configure.ac    2019-05-30 08:05:34.000000000 +0200
+++ new/xorgxrdp-0.2.11/configure.ac    2019-08-16 03:14:04.000000000 +0200
@@ -2,7 +2,7 @@
 
 AC_PREREQ(2.65)
 # package version must be x.y.z
-AC_INIT([xorgxrdp], [0.2.10], [[email protected]])
+AC_INIT([xorgxrdp], [0.2.11], [[email protected]])
 package_version_major=$(echo ${PACKAGE_VERSION}|cut -d. -f1)
 package_version_minor=$(echo ${PACKAGE_VERSION}|cut -d. -f2)
 package_version_patchlevel=$(echo ${PACKAGE_VERSION}|cut -d. -f3)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorgxrdp-0.2.10/module/rdp.h 
new/xorgxrdp-0.2.11/module/rdp.h
--- old/xorgxrdp-0.2.10/module/rdp.h    2019-05-30 04:27:34.000000000 +0200
+++ new/xorgxrdp-0.2.11/module/rdp.h    2019-08-16 03:14:04.000000000 +0200
@@ -305,9 +305,6 @@
     copy_box_dst2_proc a8r8g8b8_to_nv12_box;
 
     /* multimon */
-    int extra_outputs;
-    RRCrtcPtr crtc[16];
-    RROutputPtr output[16];
     struct monitor_info minfo[16]; /* client monitor data */
     int doMultimon;
     int monitorCount;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorgxrdp-0.2.10/module/rdpRandR.c 
new/xorgxrdp-0.2.11/module/rdpRandR.c
--- old/xorgxrdp-0.2.10/module/rdpRandR.c       2018-12-11 06:18:41.000000000 
+0100
+++ new/xorgxrdp-0.2.11/module/rdpRandR.c       2019-08-16 03:14:04.000000000 
+0200
@@ -378,25 +378,20 @@
         LLOGLN(0, ("rdpRRAddOutput: RROutputSetConnection failed"));
     }
     RRCrtcNotify(crtc, mode, x, y, RR_Rotate_0, NULL, 1, &output);
-
-    dev->output[dev->extra_outputs] = output;
-    dev->crtc[dev->extra_outputs] = crtc;
-    dev->extra_outputs++;
-
     return output;
 }
 
 
/******************************************************************************/
 static RROutputPtr
-rdpRRUpdateOutput(rdpPtr dev, int x, int y, int width, int height, int index)
+rdpRRUpdateOutput(RROutputPtr output, RRCrtcPtr crtc,
+                  int x, int y, int width, int height)
 {
     RRModePtr mode;
-    RRCrtcPtr crtc;
-    RROutputPtr output;
     xRRModeInfo modeInfo;
     char name[64];
     const int vfreq = 50;
 
+    LLOGLN(0, ("rdpRRUpdateOutput:"));
     sprintf (name, "%dx%d", width, height);
     memset (&modeInfo, 0, sizeof(modeInfo));
     modeInfo.width = width;
@@ -408,15 +403,13 @@
     mode = RRModeGet(&modeInfo, name);
     if (mode == 0)
     {
-        LLOGLN(0, ("rdpRRAddOutput: RRModeGet failed"));
+        LLOGLN(0, ("rdpRRUpdateOutput: RRModeGet failed"));
         return 0;
     }
-    output = dev->output[index];
     if (!RROutputSetModes(output, &mode, 1, 0))
     {
-        LLOGLN(0, ("rdpRRAddOutput: RROutputSetModes failed"));
+        LLOGLN(0, ("rdpRRUpdateOutput: RROutputSetModes failed"));
     }
-    crtc = dev->crtc[index];
     RRCrtcNotify(crtc, mode, x, y, RR_Rotate_0, NULL, 1, &output);
     RROutputChanged(output, 1);
     return output;
@@ -446,6 +439,27 @@
 }
 
 
/******************************************************************************/
+static int
+rdpRRRemoveExtra(rrScrPrivPtr pRRScrPriv, int count)
+{
+    int index;
+
+    while (pRRScrPriv->numCrtcs > count)
+    {
+        index = pRRScrPriv->numCrtcs - 1;
+        RRCrtcDestroy(pRRScrPriv->crtcs[index]);
+        pRRScrPriv->crtcs[index] = NULL;
+    }
+    while (pRRScrPriv->numOutputs > count)
+    {
+        index = pRRScrPriv->numOutputs - 1;
+        RROutputDestroy(pRRScrPriv->outputs[index]);
+        pRRScrPriv->outputs[index] = NULL;
+    }
+    return 0;
+}
+
+/******************************************************************************/
 int
 rdpRRSetRdpOutputs(rdpPtr dev)
 {
@@ -459,8 +473,8 @@
     RROutputPtr output;
 
     pRRScrPriv = rrGetScrPriv(dev->pScreen);
-    LLOGLN(0, ("rdpRRSetRdpOutputs: numCrtcs %d monitorCount %d",
-           pRRScrPriv->numCrtcs, dev->monitorCount));
+    LLOGLN(0, ("rdpRRSetRdpOutputs: numCrtcs %d numOutputs %d monitorCount %d",
+           pRRScrPriv->numCrtcs, pRRScrPriv->numOutputs, dev->monitorCount));
     if (dev->monitorCount <= 0)
     {
         left = 0;
@@ -473,8 +487,9 @@
             LLOGLN(0, ("rdpRRSetRdpOutputs: update output %d "
                    "left %d top %d width %d height %d",
                    0, left, top, width, height));
-            output = rdpRRUpdateOutput(dev,
-                                       left, top, width, height, 0);
+            output = rdpRRUpdateOutput(pRRScrPriv->outputs[0],
+                                       pRRScrPriv->crtcs[0],
+                                       left, top, width, height);
         }
         else
         {
@@ -486,15 +501,13 @@
             output = rdpRRAddOutput(dev, text,
                                     left, top, width, height);
         }
-        /* remove any entra */
-        for (index = pRRScrPriv->numCrtcs; index > 1; index--)
-        {
-            RRCrtcDestroy(pRRScrPriv->crtcs[index - 1]);
-        }
-        for (index = pRRScrPriv->numOutputs; index > 1; index--)
+        if (output == NULL)
         {
-            RROutputDestroy(pRRScrPriv->outputs[index - 1]);
+            LLOGLN(0, ("rdpRRSetRdpOutputs: rdpRRUpdateOutput failed"));
+            return 1;
         }
+        /* remove any entra */
+        rdpRRRemoveExtra(pRRScrPriv, 1);
     }
     else
     {
@@ -510,8 +523,9 @@
                 LLOGLN(0, ("rdpRRSetRdpOutputs: update output %d "
                        "left %d top %d width %d height %d",
                        index, left, top, width, height));
-                output = rdpRRUpdateOutput(dev,
-                                           left, top, width, height, index);
+                output = rdpRRUpdateOutput(pRRScrPriv->outputs[index],
+                                           pRRScrPriv->crtcs[index],
+                                           left, top, width, height);
             }
             else
             {
@@ -527,16 +541,14 @@
             {
                 RRSetPrimaryOutput(pRRScrPriv, output);
             }
+            if (output == NULL)
+            {
+                LLOGLN(0, ("rdpRRSetRdpOutputs: rdpRRUpdateOutput failed"));
+                return 1;
+            }
         }
         /* remove any entra */
-        for (index = pRRScrPriv->numCrtcs; index > dev->monitorCount; index--)
-        {
-            RRCrtcDestroy(pRRScrPriv->crtcs[index - 1]);
-        }
-        for (index = pRRScrPriv->numOutputs; index > dev->monitorCount; 
index--)
-        {
-            RROutputDestroy(pRRScrPriv->outputs[index - 1]);
-        }
+        rdpRRRemoveExtra(pRRScrPriv, dev->monitorCount);
     }
     return 0;
 }


Reply via email to