added checks for locking
also assigning the window field to null when quitting the window git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17128 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -463,8 +463,10 @@ KeyboardInputDevice::Stop(const char *name, void *cookie)
|
|||||||
wait_for_thread(device->device_watcher, &dummy);
|
wait_for_thread(device->device_watcher, &dummy);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fTMWindow)
|
if (fTMWindow) {
|
||||||
fTMWindow->PostMessage(B_QUIT_REQUESTED);
|
fTMWindow->PostMessage(B_QUIT_REQUESTED);
|
||||||
|
fTMWindow = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,27 +48,28 @@ TMWindow::TMWindow()
|
|||||||
B_ALL_WORKSPACES),
|
B_ALL_WORKSPACES),
|
||||||
fQuitting(false)
|
fQuitting(false)
|
||||||
{
|
{
|
||||||
Lock();
|
if (Lock()) {
|
||||||
|
|
||||||
// ToDo: make this font sensitive
|
// ToDo: make this font sensitive
|
||||||
|
|
||||||
fView = new TMView(Bounds(), "background", B_FOLLOW_ALL,
|
fView = new TMView(Bounds(), "background", B_FOLLOW_ALL,
|
||||||
B_WILL_DRAW, B_NO_BORDER);
|
B_WILL_DRAW, B_NO_BORDER);
|
||||||
AddChild(fView);
|
AddChild(fView);
|
||||||
|
|
||||||
float width, height;
|
float width, height;
|
||||||
fView->GetPreferredSize(&width, &height);
|
fView->GetPreferredSize(&width, &height);
|
||||||
ResizeTo(width, height);
|
ResizeTo(width, height);
|
||||||
|
|
||||||
BRect screenFrame = BScreen(this).Frame();
|
BRect screenFrame = BScreen(this).Frame();
|
||||||
BPoint point;
|
BPoint point;
|
||||||
point.x = (screenFrame.Width() - Bounds().Width()) / 2;
|
point.x = (screenFrame.Width() - Bounds().Width()) / 2;
|
||||||
point.y = (screenFrame.Height() - Bounds().Height()) / 2;
|
point.y = (screenFrame.Height() - Bounds().Height()) / 2;
|
||||||
|
|
||||||
if (screenFrame.Contains(point))
|
if (screenFrame.Contains(point))
|
||||||
MoveTo(point);
|
MoveTo(point);
|
||||||
|
|
||||||
Unlock();
|
Unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -102,11 +103,14 @@ TMWindow::QuitRequested()
|
|||||||
void
|
void
|
||||||
TMWindow::Enable()
|
TMWindow::Enable()
|
||||||
{
|
{
|
||||||
SetPulseRate(1000000);
|
if (Lock()) {
|
||||||
|
SetPulseRate(1000000);
|
||||||
if (IsHidden()) {
|
|
||||||
fView->UpdateList();
|
if (IsHidden()) {
|
||||||
Show();
|
fView->UpdateList();
|
||||||
|
Show();
|
||||||
|
}
|
||||||
|
Unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,6 +202,7 @@ TMView::AttachedToWindow()
|
|||||||
reboot->SetTarget(this);
|
reboot->SetTarget(this);
|
||||||
|
|
||||||
fKillButton->SetTarget(this);
|
fKillButton->SetTarget(this);
|
||||||
|
fRestartButton->SetTarget(this);
|
||||||
fListView->SetTarget(this);
|
fListView->SetTarget(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +222,6 @@ TMView::MessageReceived(BMessage *msg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TM_RESTART_DESKTOP: {
|
case TM_RESTART_DESKTOP: {
|
||||||
fRestartButton->SetEnabled(false);
|
|
||||||
if (!be_roster->IsRunning(kTrackerSignature))
|
if (!be_roster->IsRunning(kTrackerSignature))
|
||||||
be_roster->Launch(kTrackerSignature);
|
be_roster->Launch(kTrackerSignature);
|
||||||
if (!be_roster->IsRunning(kDeskbarSignature))
|
if (!be_roster->IsRunning(kDeskbarSignature))
|
||||||
@@ -302,10 +306,9 @@ TMView::UpdateList()
|
|||||||
|
|
||||||
bool desktopRunning = be_roster->IsRunning(kTrackerSignature)
|
bool desktopRunning = be_roster->IsRunning(kTrackerSignature)
|
||||||
&& be_roster->IsRunning(kDeskbarSignature);
|
&& be_roster->IsRunning(kDeskbarSignature);
|
||||||
if (desktopRunning ^ fRestartButton->IsHidden())
|
if (!desktopRunning && fRestartButton->IsHidden())
|
||||||
fRestartButton->Show();
|
fRestartButton->Show();
|
||||||
if (!desktopRunning)
|
fRestartButton->SetEnabled(!desktopRunning);
|
||||||
fRestartButton->SetEnabled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user