* Make the shutdown request no longer prevent apps from being launched. Now
they only cannot be launched anymore once you acknowledge that request. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30744 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -683,10 +683,7 @@ ShutdownProcess::Init(BMessage* request)
|
|||||||
RETURN_ERROR(fInternalEventSemaphore);
|
RETURN_ERROR(fInternalEventSemaphore);
|
||||||
|
|
||||||
// init the app server connection
|
// init the app server connection
|
||||||
fHasGUI = (Registrar::App()->InitGUIContext() == B_OK);
|
fHasGUI = Registrar::App()->InitGUIContext() == B_OK;
|
||||||
|
|
||||||
// tell TRoster not to accept new applications anymore
|
|
||||||
fRoster->SetShuttingDown(true);
|
|
||||||
|
|
||||||
// start watching application quits
|
// start watching application quits
|
||||||
status_t error = fRoster->AddWatcher(this);
|
status_t error = fRoster->AddWatcher(this);
|
||||||
@@ -695,18 +692,6 @@ ShutdownProcess::Init(BMessage* request)
|
|||||||
RETURN_ERROR(error);
|
RETURN_ERROR(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
// get a list of all applications to shut down and sort them
|
|
||||||
error = fRoster->GetShutdownApps(fUserApps, fSystemApps, fBackgroundApps,
|
|
||||||
fVitalSystemApps);
|
|
||||||
if (error != B_OK) {
|
|
||||||
fRoster->RemoveWatcher(this);
|
|
||||||
fRoster->SetShuttingDown(false);
|
|
||||||
RETURN_ERROR(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
fUserApps.Sort(&inverse_compare_by_registration_time);
|
|
||||||
fSystemApps.Sort(&inverse_compare_by_registration_time);
|
|
||||||
|
|
||||||
// start the worker thread
|
// start the worker thread
|
||||||
fWorker = spawn_thread(_WorkerEntry, "shutdown worker", B_NORMAL_PRIORITY,
|
fWorker = spawn_thread(_WorkerEntry, "shutdown worker", B_NORMAL_PRIORITY,
|
||||||
this);
|
this);
|
||||||
@@ -1268,6 +1253,26 @@ ShutdownProcess::_WorkerDoShutdown()
|
|||||||
throw_error(B_SHUTDOWN_CANCELLED);
|
throw_error(B_SHUTDOWN_CANCELLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// tell TRoster not to accept new applications anymore
|
||||||
|
fRoster->SetShuttingDown(true);
|
||||||
|
|
||||||
|
fWorkerLock.Lock();
|
||||||
|
|
||||||
|
// get a list of all applications to shut down and sort them
|
||||||
|
status_t status = fRoster->GetShutdownApps(fUserApps, fSystemApps,
|
||||||
|
fBackgroundApps, fVitalSystemApps);
|
||||||
|
if (status != B_OK) {
|
||||||
|
fWorkerLock.Unlock();
|
||||||
|
fRoster->RemoveWatcher(this);
|
||||||
|
fRoster->SetShuttingDown(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fUserApps.Sort(&inverse_compare_by_registration_time);
|
||||||
|
fSystemApps.Sort(&inverse_compare_by_registration_time);
|
||||||
|
|
||||||
|
fWorkerLock.Unlock();
|
||||||
|
|
||||||
// make the shutdown window ready and show it
|
// make the shutdown window ready and show it
|
||||||
_InitShutdownWindow();
|
_InitShutdownWindow();
|
||||||
_SetShutdownWindowCurrentApp(-1);
|
_SetShutdownWindowCurrentApp(-1);
|
||||||
@@ -1321,8 +1326,8 @@ ShutdownProcess::_WorkerDoShutdown()
|
|||||||
do {
|
do {
|
||||||
team_id team;
|
team_id team;
|
||||||
int32 phase;
|
int32 phase;
|
||||||
status_t error = _GetNextEvent(event, team, phase, true);
|
status = _GetNextEvent(event, team, phase, true);
|
||||||
if (error != B_OK)
|
if (status != B_OK)
|
||||||
break;
|
break;
|
||||||
} while (event != REBOOT_SYSTEM_EVENT);
|
} while (event != REBOOT_SYSTEM_EVENT);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user