Hello community,

here is the log from the commit of package kdebase4-workspace for 
openSUSE:Factory checked in at 2013-07-22 17:14:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdebase4-workspace (Old)
 and      /work/SRC/openSUSE:Factory/.kdebase4-workspace.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kdebase4-workspace"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kdebase4-workspace/kdebase4-workspace.changes    
2013-07-08 07:34:29.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.kdebase4-workspace.new/kdebase4-workspace.changes   
    2013-07-22 17:16:09.000000000 +0200
@@ -1,0 +2,25 @@
+Tue Jul 16 19:38:20 UTC 2013 - [email protected]
+
+- update kdm_plymouth patch to make it work with multiple static
+  X servers (bnc#809806)
+
+-------------------------------------------------------------------
+Tue Jul 16 12:28:27 UTC 2013 - [email protected]
+
+- Based on the upstream decision, drop krandr as a requirement for 
+  kdebase4-workspace and replace it with kscreen. Kscreen is the 
+  new screen management tool.
+
+-------------------------------------------------------------------
+Mon Jul 15 08:12:54 UTC 2013 - [email protected]
+
+- Update to 4.10.95
+ * KDE 4.11 RC 1 release
+ * See http://www.kde.org/announcements/announce-4.11-rc1.php
+
+-------------------------------------------------------------------
+Sun Jul 14 11:43:38 UTC 2013 - [email protected]
+
+- add krandr requires to kdebase4-workspace (used by startkde) 
+
+-------------------------------------------------------------------

Old:
----
  kde-workspace-4.10.90.tar.xz

New:
----
  kde-workspace-4.10.95.tar.xz

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

Other differences:
------------------
++++++ kdebase4-workspace.spec ++++++
--- /var/tmp/diff_new_pack.sh848e/_old  2013-07-22 17:16:11.000000000 +0200
+++ /var/tmp/diff_new_pack.sh848e/_new  2013-07-22 17:16:11.000000000 +0200
@@ -23,7 +23,7 @@
 %endif
 
 Name:           kdebase4-workspace
-Version:        4.10.90
+Version:        4.10.95
 Release:        0
 Summary:        The KDE Workspace Components
 License:        GPL-2.0+
@@ -149,6 +149,7 @@
 Requires:       desktop-data-openSUSE
 Requires:       kactivities4 >= %{version}
 Requires:       kde4-kgreeter-plugins = %{version}
+Requires:       kscreen
 Requires:       polkit-kde-agent-1
 Requires:       windowmanager
 # patch kdm-sysconfig-values.diff requires /var/lib/xdm/authdir/authfiles 
(bnc#784212)
@@ -164,7 +165,6 @@
 Recommends:     plasma-addons
 Recommends:     plasmoid-quickaccess
 Recommends:     python-kdebase4
-Recommends:     kscreen
 Suggests:       kdm
 Requires(pre): permissions
 %define debug_package_requires %{name} = %{version}-%{release} 
kdelibs4-debuginfo
@@ -334,7 +334,7 @@
 %patch12 -p1
 %patch13
 %patch14 -p1
-%patch15
+%patch15 -p1
 ## Workspace patches
 %patch50
 %patch51

++++++ kde-workspace-4.10.90.tar.xz -> kde-workspace-4.10.95.tar.xz ++++++
/work/SRC/openSUSE:Factory/kdebase4-workspace/kde-workspace-4.10.90.tar.xz 
/work/SRC/openSUSE:Factory/.kdebase4-workspace.new/kde-workspace-4.10.95.tar.xz 
differ: char 27, line 1

++++++ kdm_plymouth.patch ++++++
--- /var/tmp/diff_new_pack.sh848e/_old  2013-07-22 17:16:11.000000000 +0200
+++ /var/tmp/diff_new_pack.sh848e/_new  2013-07-22 17:16:11.000000000 +0200
@@ -1,6 +1,8 @@
---- kdm/backend/dm.c   2011-09-06 16:09:17.000000000 +0200
-+++ kdm/backend/dm.c   2013-06-20 16:09:48.849938312 +0000
-@@ -1347,6 +1347,81 @@ getBusyVTs(void)
+diff --git a/kdm/backend/dm.c b/kdm/backend/dm.c
+index e0f1366..5a5f8a7 100644
+--- a/kdm/backend/dm.c
++++ b/kdm/backend/dm.c
+@@ -1347,54 +1347,207 @@ getBusyVTs(void)
      return activeVTs;
  }
  
@@ -11,25 +13,27 @@
 +        struct vt_stat console_state = { 0 };
 +        console_fd = open ("/dev/tty0", O_RDONLY | O_NOCTTY);
 +        if (console_fd < 0) {
-+                goto out;
-+        }
-+        if (ioctl (console_fd, VT_GETSTATE, &console_state) < 0) {
-+                goto out;
-+        }
-+out:
-+        if (console_fd >= 0) {
-+                close (console_fd);
++                return 0;
 +        }
++        ioctl (console_fd, VT_GETSTATE, &console_state);
++
++        close (console_fd);
 +        return console_state.v_active;
 +}
 +
 +static int
 +plymouth_is_running (void)
 +{
++        static int running = -1;
++        if (running == 0)
++            return 0;
++
 +        int status;
 +        status = system ("/usr/bin/plymouth --ping");
 +
-+        return WIFEXITED (status) && WEXITSTATUS (status) == 0;
++        running = WIFEXITED (status) && WEXITSTATUS (status) == 0;
++        logWarn ("plymouth is %srunning\n", running?"":"NOT ");
++        return running;
 +}
 +
 +static int
@@ -54,16 +58,16 @@
 +plymouth_quit_with_transition (void)
 +{
 +        int status;
-+        status = system ("/usr/bin/plymouth quit --retain-splash");
++        status = system ("/usr/bin/plymouth --wait quit --retain-splash");
 +
 +        return WIFEXITED (status) && WEXITSTATUS (status) == 0;
 +}
 +
-+static int
++int
 +plymouth_quit_without_transition (void)
 +{
 +        int status;
-+        status = system ("/usr/bin/plymouth quit");
++        status = system ("/usr/bin/plymouth --wait quit");
 +
 +        return WIFEXITED (status) && WEXITSTATUS (status) == 0;
 +}
@@ -82,85 +86,226 @@
  static void
  allocateVT(struct display *d)
  {
-@@ -1356,6 +1431,47 @@ allocateVT(struct display *d)
+     struct display *cd;
+-    int i, tvt, volun;
++    int i, tvt;
+ 
      if ((d->displayType & d_location) == dLocal &&
          d->status == notRunning && !d->serverVT && d->reqSrvVT >= 0)
      {
++        /* Try to find the correct VT.
++         * If ServerVT is specified in the config, use it (if the admin used 
the
++         * same VT for multiple display, it is his/her own fault, no checks 
done).
++         * Otherwise, walk the list of specified VTs. Positive numbers are 
used
++         * even if the VT is already in use by a tty. Negative numbers and 
++         * unspecified numbers (up to #15) are used if not already in use.
++         * VTs already in use (cd->serverVT) or requested (cd->reqSrvVT)
++         * by any display are skipped.
++         */
++
++        /* some special handling is needed for Plymouth:
++         * if no VT is requested, use the active VT from plymouth for the 
first
++         * started display.
++         * If the display takes over the VT from plymouth, deactivate plymouth
++         */
++
++        char allowedVTs[16] = { 0 };
+         if (d->reqSrvVT && d->reqSrvVT < 16) {
+-            d->serverVT = d->reqSrvVT;
++            allowedVTs[d->reqSrvVT] = 1;
+         } else {
+-            for (i = tvt = 0;;) {
+-                if (serverVTs[i]) {
+-                    tvt = atoi(serverVTs[i++]);
+-                    volun = False;
+-                    if (tvt < 0) {
+-                        tvt = -tvt;
+-                        volun = True;
+-                    }
+-                    if (!tvt || tvt >= 16)
+-                        continue;
+-                } else {
+-                    if (++tvt >= 16)
+-                        break;
+-                    volun = True;
++            for (i = 0; serverVTs[i]; i++) {
++                tvt = atoi(serverVTs[i]);
++                if ((tvt >= 0) && (tvt < 16)) {
++                    allowedVTs[tvt] = 1;
++                } else if (tvt > -16) {
++                    allowedVTs[-tvt] = 2;
+                 }
+-                for (cd = displays; cd; cd = cd->next) {
+-                    if (cd->reqSrvVT == tvt && /* protect from lusers */
+-                            (cd->status != zombie || cd->zstatus != 
DS_REMOVE))
+-                        goto next;
+-                    if (cd->serverVT == tvt) {
+-                        if (cd->status != zombie || cd->zstatus == DS_REMOTE)
+-                            goto next;
+-                        if (!cd->follower) {
+-                            d->serverVT = -1;
+-                            cd->follower = d;
+-                            return;
+-                        }
+-                    }
++            }
++
++            for (tvt = 15; allowedVTs[tvt] == 0; tvt--) {
++              allowedVTs[tvt] = 2;
++            }
++
++            for (cd = displays; cd; cd = cd->next) {
++                if (cd->status != zombie) {
++                    if (cd->reqSrvVT >= 0) allowedVTs[cd->reqSrvVT] = 0;
++                    if (cd->serverVT >= 0) allowedVTs[cd->serverVT] = 0;
++                } else if (cd->zstatus == DS_REMOTE) {
++                    /* dying, but will spawn new server for remote login */
++                    if (cd->serverVT >= 0) allowedVTs[cd->serverVT] = 0;
++                } else if (cd->zstatus != DS_REMOVE) {
++                    /* dying, but will be restarted or reserved */
++                    if (cd->reqSrvVT >= 0) allowedVTs[cd->reqSrvVT] = 0;
+                 }
+-                if (!volun || !((1 << tvt) & getBusyVTs())) {
+-                    d->serverVT = tvt;
++            }
++        }
++
 +        /* check for plymouth using newer methods */
-+        d->plymouth_is_running = plymouth_is_running ();
-+        if (d->plymouth_is_running) {
-+            /* call plymouth deactivate */
-+            plymouth_prepare_for_transition ();
++        d->plymouth_vt = -1;
++        if (plymouth_is_running ()) {
 +            if (plymouth_has_active_vt ()) {
-+                /* plymouth was displaying a splash screen and has
-+                 * terminated leaving it on screen
-+                 */
-+                int vt;
-+                vt = get_active_vt ();
-+                if (vt > 0) {
-+                    if (d->reqSrvVT <= 0 || d->reqSrvVT == vt) {
-+                        /* start this X server on the active vt */
-+                        d->serverVT = vt;
-+                        return;
-+                    }
-+                }
-+           }
-+           else {
-+                /* plymouth might have been running but did not display
-+                * a splash screen.
-+                */ 
-+               
-+                /* call plymouth quit and start the X server as usual */
-+                d->plymouth_is_running = !plymouth_quit_without_transition ();
++                int vt = get_active_vt ();
++                if (allowedVTs[vt]) {
++                    logWarn ("plymouth is active on VT %d, reusing for %s\n", 
vt, d->name);
++                    d->serverVT = vt;
++                    d->plymouth_vt = vt;
+                     return;
+                 }
+-          next: ;
 +            }
-+
 +        /* fallback to old/deprecated method */
 +        } else if ( triggered_to_force_display_on_active_vt() >= 0 ) {
-+            int vt;
-+            vt = get_active_vt();
-+            if (vt > 0) {
-+                if (d->reqSrvVT <= 0 || d->reqSrvVT == vt) {
-+                    d->serverVT = vt;
++            int vt = get_active_vt ();
++            if (allowedVTs[vt]) {
++                d->serverVT = vt;
++                return;
++            }
++        }
++
++        for (tvt = 0; tvt < 16; tvt++) {
++            if ((allowedVTs[tvt] == 1) ||
++                ((allowedVTs[tvt] == 2) && !((1 << tvt) & getBusyVTs()))) {
++                d->serverVT = tvt;
++                return;
+             }
+         }
++
++        for (cd = displays; cd; cd = cd->next) {
++            if ((cd->status == zombie) && (cd->zstatus != DS_REMOTE) &&
++                (cd->follower == 0) && (cd->reqSrvVT != cd->serverVT)) {
++            /* removed; or restarted/reserved on any VT */
++                    d->serverVT = -1;
++                    cd->follower = d;
 +                    return;
-+                }
 +            }
 +        }
++    }
++}
 +
-+      
-         if (d->reqSrvVT && d->reqSrvVT < 16) {
-             d->serverVT = d->reqSrvVT;
-         } else {
---- kdm/backend/dm.h   2011-09-06 16:09:17.000000000 +0200
-+++ kdm/backend/dm.h   2011-09-07 16:23:59.018135847 +0200
-@@ -304,6 +304,8 @@
++static void
++replacePlymouth(void)
++{
++    struct display *cd;
++
++    /* if one display reuses plymouth' VT, plymouth is stopped in the
++     * startServerSuccess/Failed callback (see server.c). In any other
++     * case plymouth is stopped now.
++     */
++    for (cd = displays; cd; cd = cd->next) {
++        if (cd->serverVT == cd->plymouth_vt) {
++            if (cd->status == notRunning) {
++                /* tell plymouth to quit when server has started */
++                logWarn ("plymouth should quit after server startup\n");
++                plymouth_prepare_for_transition ();
++                kickDisplay(cd);
++                return;
++            } else {
++                /* replacing server is starting up, do nothing */
++                return;
++            }
++        }
++    }
++
++    if ( plymouth_is_running ()) {
++        plymouth_prepare_for_transition ();
++        plymouth_quit_without_transition ();
+     }
+ }
+ #endif
+@@ -1407,6 +1560,7 @@ startDisplays(void)
+ #ifdef HAVE_VTS
+     activeVTs = -1;
+     forEachDisplayRev(allocateVT);
++    replacePlymouth();
+ #endif
+     forEachDisplay(kickDisplay);
+ }
+diff --git a/kdm/backend/dm.h b/kdm/backend/dm.h
+index 64e106b..930af0e 100644
+--- a/kdm/backend/dm.h
++++ b/kdm/backend/dm.h
+@@ -304,6 +304,8 @@ struct display {
      int authNum;                /* number of authorizations */
      char *authFile;             /* file to store authorization in */
      char *greeterAuthFile;      /* file to store authorization for greeter in 
*/
 +    
-+    int plymouth_is_running;    /* Plymouth's status */
++    int plymouth_vt;            /* Plymouth's VT nr */
  };
  
  #define d_location   1
-@@ -428,6 +430,8 @@
+@@ -428,6 +430,9 @@ int anyDisplaysLeft(void);
  void forEachDisplay(void (*f)(struct display *));
  #ifdef HAVE_VTS
  void forEachDisplayRev(void (*f)(struct display *));
 +/* function for plymouth */
 +int plymouth_quit_with_transition (void);
++int plymouth_quit_without_transition (void);
  #endif
  void removeDisplay(struct display *old);
  struct display
---- kdm/backend/server.c       2011-09-06 16:09:17.000000000 +0200
-+++ kdm/backend/server.c       2011-09-07 16:23:59.018135847 +0200
-@@ -137,6 +137,11 @@
+diff --git a/kdm/backend/server.c b/kdm/backend/server.c
+index d8dd6f3..8b4708e 100644
+--- a/kdm/backend/server.c
++++ b/kdm/backend/server.c
+@@ -80,6 +80,7 @@ startServerOnce(void)
+     char **argv;
+ 
+     debug("startServerOnce for %s, try %d\n", d->name, ++d->startTries);
++
+     d->serverStatus = starting;
+     switch (Fork(&d->serverPid)) {
+     case 0:
+@@ -137,6 +138,12 @@ startServerSuccess()
      struct display *d = startingServer;
      d->serverStatus = ignore;
      serverTimeout = TO_INF;
-+    if (d->plymouth_is_running) {
-+        debug( "Quitting Plymouth with transition\n" );
-+        d->plymouth_is_running = !plymouth_quit_with_transition ();
-+        debug ("Is Plymouth still running? %s\n", d->plymouth_is_running ? 
"yes" : "no");
++    if ((d->plymouth_vt == d->serverVT)) {
++        int plymouth_running;
++        logWarn ("Quitting Plymouth with transition\n" );
++        plymouth_running = !plymouth_quit_with_transition ();
++        logWarn ("Is Plymouth still running? %s\n", plymouth_running ? "yes" 
: "no");
 +    }
      debug("X server ready, starting session\n");
      startDisplayP2(d);
  }
+@@ -154,6 +161,10 @@ startServerFailed()
+         startingServer = 0;
+         logError("X server for display %s cannot be started,"
+                  " session disabled\n", d->name);
++        if ((d->plymouth_vt == d->serverVT)) {
++            logWarn ("Quitting Plymouth without transition\n" );
++            plymouth_quit_without_transition ();
++        }
+         stopDisplay(d);
+     }
+ }



-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to