Skip to content

Commit

Permalink
Merge branch 'master' into mythtv-rec2
Browse files Browse the repository at this point in the history
Conflicts:
	mythtv/programs/mythbackend/main_helpers.cpp
	mythtv/programs/mythbackend/mainserver.cpp
  • Loading branch information
daniel-kristjansson committed Jul 28, 2011
2 parents 16afdc6 + c01fd21 commit 65f3613
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 2 deletions.
16 changes: 14 additions & 2 deletions mythtv/programs/mythbackend/main_helpers.cpp
Expand Up @@ -221,8 +221,20 @@ void cleanup(void)
signal(SIGUSR1, SIG_DFL);
#endif

delete gCoreContext->GetScheduler();
gCoreContext->SetScheduler(NULL);
delete housekeeping;
housekeeping = NULL;

if (gCoreContext)
{
delete gCoreContext->GetScheduler();
gCoreContext->SetScheduler(NULL);
}

delete expirer;
expirer;

delete jobqueue;
jobqueue = NULL;

delete g_pUPnp;
g_pUPnp = NULL;
Expand Down
24 changes: 24 additions & 0 deletions mythtv/programs/mythbackend/mainserver.cpp
Expand Up @@ -212,6 +212,7 @@ class ProcessRequestThread : public QThread
public:
ProcessRequestThread(MainServer *ms) :
parent(ms), socket(NULL), threadlives(false) {}
~ProcessRequestThread() { killit(); wait(); }

void setup(MythSocket *sock)
{
Expand Down Expand Up @@ -341,6 +342,12 @@ MainServer::~MainServer()
if (mythserver)
mythserver->disconnect();

// since Scheduler::SetMainServer() isn't thread-safe
// we need to shut down the scheduler thread before we
// can call SetMainServer(NULL)
if (m_sched)
m_sched->Stop();

// tell truncate runs not to waste time truncating,
// we'll just delete in the dtor
{
Expand Down Expand Up @@ -379,6 +386,23 @@ MainServer::~MainServer()
mythserver->deleteLater();
mythserver = NULL;
}

if (m_sched)
{
m_sched->Wait();
m_sched->SetMainServer(NULL);
}

if (m_expirer)
m_expirer->SetMainServer(NULL);

QMutexLocker locker(&threadPoolLock);
MythDeque<ProcessRequestThread*>::iterator it;
for (it = threadPool.begin(); it != threadPool.end(); ++it)
(*it)->killit();
for (it = threadPool.begin(); it != threadPool.end(); ++it)
delete (*it);
threadPool.clear();
}

void MainServer::autoexpireUpdate(void)
Expand Down
7 changes: 7 additions & 0 deletions mythtv/programs/mythbackend/scheduler.cpp
Expand Up @@ -139,6 +139,13 @@ Scheduler::~Scheduler()
wait();
}

void Scheduler::Stop(void)
{
QMutexLocker locker(&schedLock);
doRun = false;
reschedWait.wakeAll();
}

void Scheduler::SetMainServer(MainServer *ms)
{
m_mainServer = ms;
Expand Down
3 changes: 3 additions & 0 deletions mythtv/programs/mythbackend/scheduler.h
Expand Up @@ -37,6 +37,9 @@ class Scheduler : public QThread, public MythScheduler
QString recordTbl = "record", Scheduler *master_sched = NULL);
~Scheduler();

void Stop(void);
void Wait(void) { QThread::wait(); }

void SetExpirer(AutoExpire *autoExpirer) { m_expirer = autoExpirer; }

void Reschedule(int recordid);
Expand Down

0 comments on commit 65f3613

Please sign in to comment.