Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=b179c9eabc27596aea6caeccfa5951f9798cff38

commit b179c9eabc27596aea6caeccfa5951f9798cff38
Author: Miklos Vajna <vmik...@frugalware.org>
Date:   Sun May 15 14:40:13 2011 +0200

kdebase-workspace-4.6.3-2-i686

- add plymouth transition patch
- NOTE: it'd disabled by default, you need:

cd /etc/systemd/system
ln -s /dev/null plymouth-quit.service
ln -s /dev/null plymouth-quit-wait.service

if you want to try it out

diff --git a/source/kde/kdebase-workspace/FrugalBuild 
b/source/kde/kdebase-workspace/FrugalBuild
index 51c7462..2db715f 100644
--- a/source/kde/kdebase-workspace/FrugalBuild
+++ b/source/kde/kdebase-workspace/FrugalBuild
@@ -5,7 +5,7 @@ USE_GPSD=${USE_GPSD:-"n"}
USE_NETWORKMANAGER=${USE_NETWORKMANAGER:-"n"}

pkgname=kdebase-workspace
-pkgrel=1
+pkgrel=2
pkgdesc="Programs specific for the KDE4 desktop."
groups=('kde')
archs=('i686' 'x86_64' 'ppc')
@@ -25,7 +25,8 @@ makedepends=("${makedepends[@]}" "ksgmltools2>=$_F_kde_ver" 
"kdelibs>=$_F_kde_ve
source=("${source[@]}" \
kde.desktop \
kde.pamd \
-        kde-np.pamd)
+        kde-np.pamd \
+       kdebase-workspace-4.4.92-kdm_plymouth081.patch)
## This will all go to 'kde-<main_package_name>-cleaner or similar
#replaces=('ksensors' 'katapult' 'tastymenu' 'kbfx' 'kdesktop-menu' \
#       'kicker-compiz' 'taskbar-compiz' 'mtaskbar' 'ksmoothdock' \
@@ -33,7 +34,8 @@ source=("${source[@]}" \
sha1sums=('50103b7752defbab08965b665fa95361bb5b3ff6' \
'e1f706c984fc81633663c662e674b6f2c64d2f83' \
'6216aad404aa0b846c835a0e8f9df4941bf74d37' \
-          '6216aad404aa0b846c835a0e8f9df4941bf74d37')
+          '6216aad404aa0b846c835a0e8f9df4941bf74d37' \
+          '5924185ad7a9f16964edd36e68cb3714ba406253')

Qt4="${_F_kde_qtver}"
Kde4="$_F_kde_ver"
diff --git 
a/source/kde/kdebase-workspace/kdebase-workspace-4.4.92-kdm_plymouth081.patch 
b/source/kde/kdebase-workspace/kdebase-workspace-4.4.92-kdm_plymouth081.patch
new file mode 100644
index 0000000..30feaeb
--- /dev/null
+++ 
b/source/kde/kdebase-workspace/kdebase-workspace-4.4.92-kdm_plymouth081.patch
@@ -0,0 +1,165 @@
+diff -up kdebase-workspace-4.4.92/kdm/backend/dm.c.kdm_plymouth 
kdebase-workspace-4.4.92/kdm/backend/dm.c
+--- kdebase-workspace-4.4.92/kdm/backend/dm.c.kdm_plymouth     2010-07-06 
01:54:30.000000000 -0500
++++ kdebase-workspace-4.4.92/kdm/backend/dm.c  2010-07-07 13:55:48.425171749 
-0500
+@@ -1329,6 +1329,81 @@ getBusyVTs(void)
+     return activeVTs;
+ }
+
++static int
++get_active_vt (void)
++{
++        int console_fd;
++        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 console_state.v_active;
++}
++
++static int
++plymouth_is_running (void)
++{
++        int status;
++        status = system ("/bin/plymouth --ping");
++
++        return WIFEXITED (status) && WEXITSTATUS (status) == 0;
++}
++
++static int
++plymouth_has_active_vt (void)
++{
++        int status;
++        status = system ("/bin/plymouth --has-active-vt");
++
++        return WIFEXITED (status) && WEXITSTATUS (status) == 0;
++}
++
++static int
++plymouth_prepare_for_transition (void)
++{
++        int status;
++        status = system ("/bin/plymouth deactivate");
++
++        return WIFEXITED (status) && WEXITSTATUS (status) == 0;
++}
++
++int
++plymouth_quit_with_transition (void)
++{
++        int status;
++        status = system ("/bin/plymouth quit --retain-splash");
++
++        return WIFEXITED (status) && WEXITSTATUS (status) == 0;
++}
++
++static int
++plymouth_quit_without_transition (void)
++{
++        int status;
++        status = system ("/bin/plymouth quit");
++
++        return WIFEXITED (status) && WEXITSTATUS (status) == 0;
++}
++
++static int
++triggered_to_force_display_on_active_vt (void)
++{
++   int should_force_display_on_active_vt;
++   
should_force_display_on_active_vt=open("/var/spool/gdm/force-display-on-active-vt",
 O_RDONLY);
++   if ( should_force_display_on_active_vt >= 0 )
++       close(should_force_display_on_active_vt);
++   unlink("/var/spool/gdm/force-display-on-active-vt");
++   return should_force_display_on_active_vt;
++}
++
+ static void
+ allocateVT(struct display *d)
+ {
+@@ -1338,6 +1413,43 @@ allocateVT(struct display *d)
+     if ((d->displayType & d_location) == dLocal &&
+         d->status == notRunning && !d->serverVT && d->reqSrvVT >= 0)
+     {
++        /* check for pymouth using old/deprecated method first */
++        if ( triggered_to_force_display_on_active_vt() >= 0 ) {
++            int vt;
++            vt = get_active_vt();
++            if (vt > 0) {
++                d->serverVT = vt;
++                return;
++            }
++        }
++
++        /* 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 ();
++            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) {
++                    /* start the 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 ();
++            }
++        }
++
+         if (d->reqSrvVT && d->reqSrvVT < 16) {
+             d->serverVT = d->reqSrvVT;
+         } else {
+diff -up kdebase-workspace-4.4.92/kdm/backend/dm.h.kdm_plymouth 
kdebase-workspace-4.4.92/kdm/backend/dm.h
+--- kdebase-workspace-4.4.92/kdm/backend/dm.h.kdm_plymouth     2010-07-06 
01:54:30.000000000 -0500
++++ kdebase-workspace-4.4.92/kdm/backend/dm.h  2010-07-07 13:48:11.874921158 
-0500
+@@ -292,6 +292,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 */
+ };
+
+ #define d_location   1
+@@ -404,6 +406,8 @@ 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);
+ #endif
+ void removeDisplay(struct display *old);
+ struct display
+diff -up kdebase-workspace-4.4.92/kdm/backend/server.c.kdm_plymouth 
kdebase-workspace-4.4.92/kdm/backend/server.c
+--- kdebase-workspace-4.4.92/kdm/backend/server.c.kdm_plymouth 2010-07-06 
01:54:30.000000000 -0500
++++ kdebase-workspace-4.4.92/kdm/backend/server.c      2010-07-07 
13:56:46.960921366 -0500
+@@ -137,6 +137,11 @@ 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");
++    }
+     debug("X server ready, starting session\n");
+     startDisplayP2(d);
+ }
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to