From b2c7cb6f60bc8598ffc90557ed45ff6773298261 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Wed, 27 Nov 2002 11:57:39 +0000 Subject: [PATCH] In the R4's bebook, they say BScreen objects shouldn't be constructed on the heap, and a BScreen object should be keep for as little time as possible, because it locks the screen. This doesn't seem to be the case in R5, but I am happier this way... git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2095 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/prefs/screen/ScreenDrawView.cpp | 17 ++++++++++------- src/prefs/screen/ScreenDrawView.h | 1 - 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/prefs/screen/ScreenDrawView.cpp b/src/prefs/screen/ScreenDrawView.cpp index 9a7525e398..bfd9954fd7 100644 --- a/src/prefs/screen/ScreenDrawView.cpp +++ b/src/prefs/screen/ScreenDrawView.cpp @@ -12,17 +12,16 @@ #include "Utility.h" ScreenDrawView::ScreenDrawView(BRect rect, char *name) - : BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW), - fScreen(new BScreen(B_MAIN_SCREEN_ID)) - + : BView(rect, name, B_FOLLOW_ALL, B_WILL_DRAW) { - if (!fScreen->IsValid()) + BScreen screen(B_MAIN_SCREEN_ID); + if (!screen->IsValid()) ; //Debugger() ? - desktopColor = fScreen->DesktopColor(current_workspace()); + desktopColor = screen->DesktopColor(current_workspace()); display_mode mode; - fScreen->GetMode(&mode); + screen->GetMode(&mode); fResolution = mode.virtual_width; } @@ -217,7 +216,11 @@ ScreenDrawView::MessageReceived(BMessage* message) case UPDATE_DESKTOP_COLOR_MSG: { - desktopColor = fScreen->DesktopColor(current_workspace()); + BScreen screen; + if (!screen.IsValid()) + break; + + desktopColor = screen->DesktopColor(current_workspace()); Invalidate(); } diff --git a/src/prefs/screen/ScreenDrawView.h b/src/prefs/screen/ScreenDrawView.h index 0af9b3b8e4..dc5cc7781f 100644 --- a/src/prefs/screen/ScreenDrawView.h +++ b/src/prefs/screen/ScreenDrawView.h @@ -14,7 +14,6 @@ public: virtual void MouseDown(BPoint point); private: - BScreen *fScreen; rgb_color desktopColor; int32 fResolution; };