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