diff --git a/kdebase-workspace-4.3.3-kdm_plymouth.patch b/kdebase-workspace-4.3.3-kdm_plymouth.patch index 2cd2453..e54e4c1 100644 --- a/kdebase-workspace-4.3.3-kdm_plymouth.patch +++ b/kdebase-workspace-4.3.3-kdm_plymouth.patch @@ -1,13 +1,51 @@ -diff -up kdebase-workspace-4.3.3/kdm/backend/dm.c.plymouth kdebase-workspace-4.3.3/kdm/backend/dm.c ---- kdebase-workspace-4.3.3/kdm/backend/dm.c.plymouth 2008-07-21 19:03:20.000000000 -0500 -+++ kdebase-workspace-4.3.3/kdm/backend/dm.c 2009-12-01 12:26:16.435483131 -0600 -@@ -1356,6 +1356,9 @@ allocateVT( struct display *d ) - } - } - } -+ /* if using plymouth, force use of specified vt. TODO: query/use activevt */ -+ if ((open( "/var/spool/gdm/force-display-on-active-vt", O_RDONLY )) >= 0 ) -+ volun = False; - if (!volun || !((1 << tvt) & getBusyVTs())) { - d->serverVT = tvt; - return; +diff -up kdebase-workspace-4.3.3/kdm/backend/dm.c.kdm_plymouth kdebase-workspace-4.3.3/kdm/backend/dm.c +--- kdebase-workspace-4.3.3/kdm/backend/dm.c.kdm_plymouth 2008-07-21 19:03:20.000000000 -0500 ++++ kdebase-workspace-4.3.3/kdm/backend/dm.c 2009-12-02 08:22:48.935095381 -0600 +@@ -1315,6 +1315,34 @@ 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 ++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); ++ unlink("/var/spool/gdm/force-display-on-active-vt"); ++ return should_force_display_on_active_vt; ++} ++ + static void + allocateVT( struct display *d ) + { +@@ -1324,7 +1352,11 @@ allocateVT( struct display *d ) + if ((d->displayType & d_location) == dLocal && + d->status == notRunning && !d->serverVT && d->reqSrvVT >= 0) + { +- if (d->reqSrvVT && d->reqSrvVT < 16) ++ if ( triggered_to_force_display_on_active_vt() >= 0 ) ++ { ++ d->serverVT = get_active_vt() ; ++ } ++ else if (d->reqSrvVT && d->reqSrvVT < 16) + d->serverVT = d->reqSrvVT; + else { + for (i = tvt = 0;;) { diff --git a/kdebase-workspace.spec b/kdebase-workspace.spec index 6fd719a..f8a18dd 100644 --- a/kdebase-workspace.spec +++ b/kdebase-workspace.spec @@ -8,7 +8,7 @@ Summary: K Desktop Environment - Workspace Name: kdebase-workspace Version: 4.3.3 -Release: 8%{?dist} +Release: 9%{?dist} Source0: ftp://ftp.kde.org/pub/kde/stable/%{version}/src/kdebase-workspace-%{version}.tar.bz2 License: GPLv2 @@ -615,6 +615,9 @@ fi %changelog +* Wed Dec 02 2009 Rex Dieter 4.3.3-9 +- (better) kdm_plymouth patch (#475890) + * Tue Dec 01 2009 Rex Dieter 4.3.3-8 - force use of ServerVTs(1), if booting from plymouth (#475890)