diff --git a/HISTORY b/HISTORY index 2721c151..1aea16d8 100644 --- a/HISTORY +++ b/HISTORY @@ -9284,3 +9284,4 @@ Video Disk Recorder Revision History This change requires that all VDRs that shall take part in a peer-to-peer network need to be updated to this version. - Moved handling remote timers into cSVDRPClientHandler::ProcessConnections(). +- Combined Start/StopSVDRPServer/ClientHandler() into Start/StopSVDRPHandler(). diff --git a/menu.c b/menu.c index c5020e6b..b12a31e9 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 4.63 2018/02/25 13:28:19 kls Exp $ + * $Id: menu.c 4.64 2018/02/25 13:54:57 kls Exp $ */ #include "menu.h" @@ -4176,17 +4176,14 @@ eOSState cMenuSetupMisc::ProcessKey(eKeys Key) if (data.SVDRPPeering != OldSVDRPPeering) Set(); if (ModifiedSVDRPSettings) { - StopSVDRPClientHandler(); - StopSVDRPServerHandler(); - StartSVDRPServerHandler(); - if (data.SVDRPPeering) - StartSVDRPClientHandler(); - else { - LOCK_TIMERS_WRITE; - Timers->SetExplicitModify(); - if (Timers->StoreRemoteTimers(NULL, NULL)) - Timers->SetModified(); - } + StopSVDRPHandler(); + { + LOCK_TIMERS_WRITE; + Timers->SetExplicitModify(); + if (Timers->StoreRemoteTimers(NULL, NULL)) + Timers->SetModified(); + } + StartSVDRPHandler(); } return state; } diff --git a/svdrp.c b/svdrp.c index 48df03ca..6f8e9d2a 100644 --- a/svdrp.c +++ b/svdrp.c @@ -10,7 +10,7 @@ * and interact with the Video Disk Recorder - or write a full featured * graphical interface that sits on top of an SVDRP connection. * - * $Id: svdrp.c 4.28 2018/02/25 13:26:17 kls Exp $ + * $Id: svdrp.c 4.29 2018/02/25 13:44:54 kls Exp $ */ #include "svdrp.h" @@ -2698,37 +2698,29 @@ void cSVDRPServerHandler::Action(void) static cMutex SVDRPHandlerMutex; -void StartSVDRPServerHandler(void) +void StartSVDRPHandler(void) { cMutexLock MutexLock(&SVDRPHandlerMutex); - if (SVDRPTcpPort && !SVDRPServerHandler) { - SVDRPServerHandler = new cSVDRPServerHandler(SVDRPTcpPort); - SVDRPServerHandler->Start(); - SVDRPServerHandler->WaitUntilReady(); + if (SVDRPTcpPort) { + if (!SVDRPServerHandler) { + SVDRPServerHandler = new cSVDRPServerHandler(SVDRPTcpPort); + SVDRPServerHandler->Start(); + SVDRPServerHandler->WaitUntilReady(); + } + if (Setup.SVDRPPeering && SVDRPUdpPort && !SVDRPClientHandler) { + SVDRPClientHandler = new cSVDRPClientHandler(SVDRPTcpPort, SVDRPUdpPort); + SVDRPClientHandler->Start(); + } } } -void StartSVDRPClientHandler(void) -{ - cMutexLock MutexLock(&SVDRPHandlerMutex); - if (SVDRPTcpPort && SVDRPUdpPort && !SVDRPClientHandler) { - SVDRPClientHandler = new cSVDRPClientHandler(SVDRPTcpPort, SVDRPUdpPort); - SVDRPClientHandler->Start(); - } -} - -void StopSVDRPServerHandler(void) -{ - cMutexLock MutexLock(&SVDRPHandlerMutex); - delete SVDRPServerHandler; - SVDRPServerHandler = NULL; -} - -void StopSVDRPClientHandler(void) +void StopSVDRPHandler(void) { cMutexLock MutexLock(&SVDRPHandlerMutex); delete SVDRPClientHandler; SVDRPClientHandler = NULL; + delete SVDRPServerHandler; + SVDRPServerHandler = NULL; } bool GetSVDRPServerNames(cStringList *ServerNames, eSvdrpFetchFlags FetchFlag) diff --git a/svdrp.h b/svdrp.h index f1ae922a..6973ddd0 100644 --- a/svdrp.h +++ b/svdrp.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: svdrp.h 4.8 2018/02/19 12:36:35 kls Exp $ + * $Id: svdrp.h 4.9 2018/02/25 13:38:59 kls Exp $ */ #ifndef __SVDRP_H @@ -25,10 +25,8 @@ enum eSvdrpFetchFlags { void SetSVDRPPorts(int TcpPort, int UdpPort); void SetSVDRPGrabImageDir(const char *GrabImageDir); -void StartSVDRPServerHandler(void); -void StartSVDRPClientHandler(void); -void StopSVDRPServerHandler(void); -void StopSVDRPClientHandler(void); +void StartSVDRPHandler(void); +void StopSVDRPHandler(void); bool GetSVDRPServerNames(cStringList *ServerNames, eSvdrpFetchFlags FetchFlag = sffNone); ///< Gets a list of all available VDRs this VDR is connected to via SVDRP, ///< and stores it in the given ServerNames list. The list is cleared diff --git a/vdr.c b/vdr.c index 1e012a2e..54207ce1 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * The project's page is at http://www.tvdr.de * - * $Id: vdr.c 4.22 2018/02/25 13:07:09 kls Exp $ + * $Id: vdr.c 4.23 2018/02/25 13:45:24 kls Exp $ */ #include @@ -946,9 +946,7 @@ int main(int argc, char *argv[]) // SVDRP: SetSVDRPPorts(SVDRPport, DEFAULTSVDRPPORT); - StartSVDRPServerHandler(); - if (Setup.SVDRPPeering) - StartSVDRPClientHandler(); + StartSVDRPHandler(); // Main program loop: @@ -1562,8 +1560,7 @@ Exit: signal(SIGPIPE, SIG_DFL); signal(SIGALRM, SIG_DFL); - StopSVDRPClientHandler(); - StopSVDRPServerHandler(); + StopSVDRPHandler(); ChannelCamRelations.Save(); cRecordControls::Shutdown(); PluginManager.StopPlugins();