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; };