mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 05:06:43 +00:00
xbmc: init takes care of reboot and shutdown
when one decides to reboot/shutdown via xbmc GUI, he/she expects it to happen immediately or with minimal delay. there are addons (trakt, watchdog) that are known to cause high (1+ minute) shutdown. ---- 16:19:15 T:140287759476608 DEBUG: CAnnouncementManager - Announcement: OnQuit from xbmc 16:19:15 T:140287759476608 DEBUG: GOT ANNOUNCEMENT, type: 8, from xbmc, message OnQuit 16:19:15 T:140287759476608 NOTICE: Storing total System Uptime 16:19:15 T:140287759476608 NOTICE: Saving settings 16:19:15 T:140287759476608 NOTICE: stop all ^^ CJobManager::GetInstance().CancelJobs() comes in 16:19:15 T:140286952978176 DEBUG: Thread JobWorker 140286952978176 terminating (autodelete) 16:19:15 T:140286978156288 DEBUG: Thread JobWorker 140286978156288 terminating (autodelete) 16:19:15 T:140286676150016 DEBUG: Thread JobWorker 140286676150016 terminating (autodelete) 16:19:19 T:140286676150016 NOTICE: Thread FileCache start, auto delete: false ^^ so far so good but this should never happen once CApplication::Stop is called. but it does 16:19:30 T:140286676150016 ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached(28) 16:19:30 T:140286676150016 NOTICE: CCurlFile::FillBuffer - Reconnect, (re)try 1 16:19:50 T:140286676150016 ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached(28) 16:19:50 T:140286676150016 NOTICE: CCurlFile::FillBuffer - Reconnect, (re)try 2 16:20:10 T:140286676150016 ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached(28) 16:20:10 T:140286676150016 ERROR: CCurlFile::FillBuffer - Reconnect failed! 16:20:10 T:140286676150016 INFO: CFileCache::Process - Hit eof. 16:20:10 T:140286676150016 DEBUG: Thread FileCache 140286676150016 terminating ^^ 1 minute shutdown delay.. ---- with this patch now xbmc can handle SIGTERM and attempt clean exit, systemd will take care of the rest if xbmc fails to exit.
This commit is contained in:
parent
ef88afc7bb
commit
71f3f63a97
@ -0,0 +1,73 @@
|
|||||||
|
From 3141728598291186cc4c9d243a1e258ce6e914ae Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Saraev <stefan@saraev.ca>
|
||||||
|
Date: Mon, 10 Mar 2014 22:00:40 +0200
|
||||||
|
Subject: [PATCH 1/2] handle SIGTERM
|
||||||
|
|
||||||
|
---
|
||||||
|
xbmc/main/main.cpp | 13 +++++++++++++
|
||||||
|
1 file changed, 13 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/xbmc/main/main.cpp b/xbmc/main/main.cpp
|
||||||
|
index ec86426..aa4a925 100644
|
||||||
|
--- a/xbmc/main/main.cpp
|
||||||
|
+++ b/xbmc/main/main.cpp
|
||||||
|
@@ -40,9 +40,22 @@
|
||||||
|
#include "input/linux/LIRC.h"
|
||||||
|
#endif
|
||||||
|
#include "XbmcContext.h"
|
||||||
|
+#include "Application.h"
|
||||||
|
+
|
||||||
|
+void xbmc_term_handler(int signum)
|
||||||
|
+{
|
||||||
|
+ CLog::Log(LOGINFO, "Received SIGTERM...");
|
||||||
|
+ g_application.Stop(0);
|
||||||
|
+}
|
||||||
|
|
||||||
|
int main(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
+ // SIGTERM handler
|
||||||
|
+ struct sigaction action;
|
||||||
|
+ memset(&action, 0, sizeof(struct sigaction));
|
||||||
|
+ action.sa_handler = xbmc_term_handler;
|
||||||
|
+ sigaction(SIGTERM, &action, NULL);
|
||||||
|
+
|
||||||
|
// set up some xbmc specific relationships
|
||||||
|
XBMC::Context context;
|
||||||
|
|
||||||
|
--
|
||||||
|
1.9.0
|
||||||
|
|
||||||
|
|
||||||
|
From 4945dbdeff5da8b162fdf0700f4026e9d71ffe04 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Saraev <stefan@saraev.ca>
|
||||||
|
Date: Mon, 10 Mar 2014 22:02:02 +0200
|
||||||
|
Subject: [PATCH 2/2] dont Stop() on shutdown/reboot
|
||||||
|
|
||||||
|
SIGTERM should be handled instead. systemd will take care
|
||||||
|
---
|
||||||
|
xbmc/ApplicationMessenger.cpp | 2 --
|
||||||
|
1 file changed, 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/ApplicationMessenger.cpp b/xbmc/ApplicationMessenger.cpp
|
||||||
|
index 3524e89..c5521f7 100644
|
||||||
|
--- a/xbmc/ApplicationMessenger.cpp
|
||||||
|
+++ b/xbmc/ApplicationMessenger.cpp
|
||||||
|
@@ -259,7 +259,6 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
|
||||||
|
|
||||||
|
case TMSG_POWERDOWN:
|
||||||
|
{
|
||||||
|
- g_application.Stop(EXITCODE_POWERDOWN);
|
||||||
|
g_powerManager.Powerdown();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
@@ -287,7 +286,6 @@ void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
|
||||||
|
case TMSG_RESTART:
|
||||||
|
case TMSG_RESET:
|
||||||
|
{
|
||||||
|
- g_application.Stop(EXITCODE_REBOOT);
|
||||||
|
g_powerManager.Reboot();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
--
|
||||||
|
1.9.0
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user