Ticket #155: mythtv.diff
File mythtv.diff, 5.3 KB (added by , 19 years ago) |
---|
-
libs/libmyth/mythcontext.h
187 187 void SetBackend(bool backend); 188 188 bool IsBackend(void); 189 189 190 void BlockShutdown(void); 191 void AllowShutdown(void); 192 190 193 QString GetInstallPrefix(void); 191 194 QString GetShareDir(void); 192 195 QString GetLibraryDir(void); -
libs/libmyth/mythcontext.cpp
813 813 return d->serverSock; 814 814 } 815 815 816 void MythContext::BlockShutdown(void) 817 { 818 QStringList strlist; 819 820 if (d->serverSock == NULL) 821 return; 822 823 strlist << "BLOCK_SHUTDOWN"; 824 WriteStringList(d->serverSock, strlist); 825 ReadStringList(d->serverSock, strlist); 826 827 // wait for the event socket to finish connecting if necessary 828 while (d->eventSock->state() == QSocket::HostLookup || 829 d->eventSock->state() == QSocket::Connecting) 830 { 831 qApp->processEvents(); 832 } 833 834 if (d->eventSock->state() != QSocket::Connected) 835 return; 836 837 strlist.clear(); 838 strlist << "BLOCK_SHUTDOWN"; 839 WriteStringList(d->eventSock, strlist); 840 ReadStringList(d->eventSock, strlist); 841 } 842 843 void MythContext::AllowShutdown(void) 844 { 845 QStringList strlist; 846 847 if (d->serverSock == NULL) 848 return; 849 850 strlist << "ALLOW_SHUTDOWN"; 851 WriteStringList(d->serverSock, strlist); 852 ReadStringList(d->serverSock, strlist); 853 854 // wait for the eventSocket to finish connecting if necessary 855 while (d->eventSock->state() == QSocket::HostLookup || 856 d->eventSock->state() == QSocket::Connecting) 857 { 858 qApp->processEvents(); 859 } 860 861 if (d->eventSock->state() != QSocket::Connected) 862 return; 863 864 strlist.clear(); 865 strlist << "ALLOW_SHUTDOWN"; 866 WriteStringList(d->eventSock, strlist); 867 ReadStringList(d->eventSock, strlist); 868 } 869 816 870 void MythContext::SetBackend(bool backend) 817 871 { 818 872 d->m_backend = backend; … … 2139 2193 .arg(d->m_localhostname).arg(true); 2140 2194 QStringList strlist = str; 2141 2195 WriteStringList(d->eventSock, strlist); 2142 //ReadStringList(d->eventSock, strlist);2196 ReadStringList(d->eventSock, strlist); 2143 2197 } 2144 2198 2145 2199 void MythContext::EventSocketClosed(void) -
programs/mythbackend/playbacksock.h
28 28 bool isLocal(void) { return local; } 29 29 bool wantsEvents(void) { return events; } 30 30 31 bool getBlockShutdown(void) { return blockshutdown; } 32 void setBlockShutdown(bool value) { blockshutdown = value; } 33 31 34 // all backend<->backend stuff below here 32 35 bool isSlaveBackend(void) { return backend; } 33 36 void setAsSlaveBackend(void) { backend = true; } … … 63 66 64 67 bool local; 65 68 bool events; 66 69 bool blockshutdown; 67 70 bool backend; 68 71 69 72 QMutex sockLock; -
programs/mythbackend/mainserver.cpp
494 494 else 495 495 HandleSetSetting(tokens, pbs); 496 496 } 497 else if (command == "ALLOW_SHUTDOWN") 498 { 499 if (tokens.size() != 1) 500 VERBOSE(VB_ALL, "Bad ALLOW_SHUTDOWN"); 501 else 502 HandleBlockShutdown(false, pbs); 503 } 504 else if (command == "BLOCK_SHUTDOWN") 505 { 506 if (tokens.size() != 1) 507 VERBOSE(VB_ALL, "Bad BLOCK_SHUTDOWN"); 508 else 509 HandleBlockShutdown(true, pbs); 510 } 497 511 else if (command == "SHUTDOWN_NOW") 498 512 { 499 513 if (tokens.size() != 1) … … 3301 3315 SendResponse(socket, retlist); 3302 3316 } 3303 3317 3318 void MainServer::HandleBlockShutdown(bool blockShutdown, PlaybackSock *pbs) 3319 { 3320 pbs->setBlockShutdown(blockShutdown); 3321 3322 QSocket *socket = pbs->getSocket(); 3323 QStringList retlist = "OK"; 3324 SendResponse(socket, retlist); 3325 } 3326 3304 3327 void MainServer::deferredDeleteSlot(void) 3305 3328 { 3306 3329 QMutexLocker lock(&deferredDeleteLock); … … 3643 3666 for (; !foundClient && (it != playbackList.end()); ++it) 3644 3667 { 3645 3668 // we simply ignore slaveBackends! 3646 if (!(*it)->isSlaveBackend()) 3669 // and clients that don't want to block shutdown 3670 if (!(*it)->isSlaveBackend() && (*it)->getBlockShutdown()) 3647 3671 foundClient = true; 3648 3672 } 3649 3673 } -
programs/mythbackend/mainserver.h
126 126 void HandleQueryLoad(PlaybackSock *pbs); 127 127 void HandleQueryUptime(PlaybackSock *pbs); 128 128 void HandleQueryMemStats(PlaybackSock *pbs); 129 129 void HandleBlockShutdown(bool blockShutdown, PlaybackSock *pbs); 130 130 131 void SendResponse(QSocket *pbs, QStringList &commands); 131 132 132 133 void getGuideDataThrough(QDateTime &GuideDataThrough);