:: [devuan-dev] bug#857: bug#857: Pat…
Kezdőlap
Delete this message
Reply to this message
Szerző: tempforever
Dátum:  
Címzett: 857
Régi témák: [devuan-dev] bug#857: Patch
Tárgy: [devuan-dev] bug#857: bug#857: Patch
Alternate patch for #857: slim creates a blank window when auto_login is set
Also included is fix for https://dev1galaxy.org/viewtopic.php?id=7501 :
slim crashes when no monitor is plugged in.
Thanks to Eeqmcsq for debugging and finding the source of these issues!

diff --git a/app.cpp b/app.cpp
index d378793..6b0d8de 100644
--- a/app.cpp
+++ b/app.cpp
@@ -454,7 +454,7 @@ void App::Run()
             try {
                 pam.check_acct();
 #endif
-            Login();
+            Login(true);
 #ifdef USE_PAM
             }
             catch(PAM::Auth_Exception& e){
@@ -648,7 +648,7 @@ int App::GetServerPID()
 }



-void App::Login()
+void App::Login(bool autologin)
 {
     struct passwd *pw;
     pid_t pid;
@@ -790,6 +790,10 @@ void App::Login()
             if ( system(sessStart.c_str()) < 0 )
                 logStream << APPNAME << ": Failed to run sessionstart_cmd" << endl;
         }
+        if( autologin )
+        {
+            LoginPanel->ClosePanel();
+        }
         Su.Login(loginCommand.c_str(), mcookie.c_str());
         _exit(OK_EXIT);
     }
diff --git a/app.h b/app.h
index 7453e34..529ec89 100644
--- a/app.h
+++ b/app.h
@@ -14,6 +14,7 @@
 #define _APP_H_


#include <X11/Xlib.h>
+#include <string>

 #ifdef USE_PAM
 #include "PAM.h"
@@ -44,7 +45,7 @@ public:
     bool isServerStarted();


 private:
-    void Login();
+    void Login(bool autologin=false);
     void Reboot();
     void Halt();
     void Suspend();
diff --git a/panel.cpp b/panel.cpp
index 7268706..79f8e03 100644
--- a/panel.cpp
+++ b/panel.cpp
@@ -947,8 +947,10 @@ Rectangle Panel::GetPrimaryViewport()


     result.x = crtc_info->x;
     result.y = crtc_info->y;
-    result.width = crtc_info->width;
-    result.height = crtc_info->height;
+    // set default value of 1024x768 if monitorless
+    // see https://dev1galaxy.org/viewtopic.php?id=7501
+    result.width = (crtc_info->width == 0 ? 1024 : crtc_info->width);
+    result.height = (crtc_info->height == 0 ? 768 : crtc_info->height);


     XRRFreeCrtcInfo(crtc_info);
     XRRFreeOutputInfo(primary_info);