From cc0226fad05a6796f50723554c10b1bbd02de7b1 Mon Sep 17 00:00:00 2001 From: X512 Date: Fri, 17 Jan 2020 03:54:48 +0900 Subject: [PATCH] ActivityMonitor: remove double buffering and custom background drawing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Part of #15623. Change-Id: Id6b7c13623e66d5b88ffc48766a5fe5ec4099b64 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2133 Reviewed-by: Stephan Aßmus --- src/apps/activitymonitor/ActivityView.cpp | 83 ++--------------------- src/apps/activitymonitor/ActivityView.h | 6 +- 2 files changed, 7 insertions(+), 82 deletions(-) diff --git a/src/apps/activitymonitor/ActivityView.cpp b/src/apps/activitymonitor/ActivityView.cpp index 4c22486741..e0181f87d2 100644 --- a/src/apps/activitymonitor/ActivityView.cpp +++ b/src/apps/activitymonitor/ActivityView.cpp @@ -553,7 +553,7 @@ const float kDraggerSize = 7; ActivityView::ActivityView(BRect frame, const char* name, const BMessage* settings, uint32 resizingMode) : BView(frame, name, resizingMode, - B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_FRAME_EVENTS), + B_WILL_DRAW | B_SUBPIXEL_PRECISE | B_FULL_UPDATE_ON_RESIZE | B_FRAME_EVENTS), fSourcesLock("data sources") { _Init(settings); @@ -598,7 +598,6 @@ ActivityView::ActivityView(BMessage* archive) ActivityView::~ActivityView() { - delete fOffscreen; delete fSystemInfoHandler; } @@ -609,7 +608,6 @@ ActivityView::_Init(const BMessage* settings) fHistoryBackgroundColor = (rgb_color){255, 255, 240}; fLegendBackgroundColor = LowColor(); // the low color is restored by the BView unarchiving - fOffscreen = NULL; #ifdef __HAIKU__ fHistoryLayoutItem = NULL; fLegendLayoutItem = NULL; @@ -925,51 +923,6 @@ ActivityView::MinSize() #endif -void -ActivityView::FrameResized(float /*width*/, float /*height*/) -{ - _UpdateOffscreenBitmap(); -} - - -void -ActivityView::_UpdateOffscreenBitmap() -{ - BRect frame = _HistoryFrame(); - frame.OffsetTo(B_ORIGIN); - - if (fOffscreen != NULL && frame == fOffscreen->Bounds()) - return; - - delete fOffscreen; - - // create offscreen bitmap - - fOffscreen = new(std::nothrow) BBitmap(frame, B_BITMAP_ACCEPTS_VIEWS, - B_RGB32); - if (fOffscreen == NULL || fOffscreen->InitCheck() != B_OK) { - delete fOffscreen; - fOffscreen = NULL; - return; - } - - BView* view = new BView(frame, NULL, B_FOLLOW_NONE, B_SUBPIXEL_PRECISE); - view->SetViewColor(fHistoryBackgroundColor); - view->SetLowColor(view->ViewColor()); - fOffscreen->AddChild(view); -} - - -BView* -ActivityView::_OffscreenView() -{ - if (fOffscreen == NULL) - return NULL; - - return fOffscreen->ChildAt(0); -} - - void ActivityView::MouseDown(BPoint where) { @@ -1323,23 +1276,15 @@ ActivityView::_PositionForValue(DataSource* source, DataHistory* values, void -ActivityView::_DrawHistory(bool drawBackground) +ActivityView::_DrawHistory() { - _UpdateOffscreenBitmap(); - BView* view = this; - if (fOffscreen != NULL) { - fOffscreen->Lock(); - view = _OffscreenView(); - } BRect frame = _HistoryFrame(); BRect outerFrame = frame.InsetByCopy(-2, -2); // draw the outer frame - uint32 flags = 0; - if (!drawBackground) - flags |= BControlLook::B_BLEND_FRAME; + uint32 flags = BControlLook::B_BLEND_FRAME; be_control_look->DrawTextControlBorder(this, outerFrame, outerFrame, fLegendBackgroundColor, flags); @@ -1432,12 +1377,9 @@ ActivityView::_DrawHistory(bool drawBackground) view->EndLineArray(); } + view->SetPenSize(1); + // TODO: add marks when an app started or quit - view->Sync(); - if (fOffscreen != NULL) { - fOffscreen->Unlock(); - DrawBitmap(fOffscreen, outerFrame.LeftTop()); - } } @@ -1467,11 +1409,7 @@ ActivityView::_UpdateResolution(int32 resolution, bool broadcast) void ActivityView::Draw(BRect updateRect) { - bool drawBackground = true; - if (Parent() && (Parent()->Flags() & B_DRAW_ON_CHILDREN) != 0) - drawBackground = false; - - _DrawHistory(drawBackground); + _DrawHistory(); if (!fShowLegend) return; @@ -1481,12 +1419,6 @@ ActivityView::Draw(BRect updateRect) if (LowUIColor() == B_NO_COLOR) SetLowColor(fLegendBackgroundColor); - if (drawBackground) { - BRect backgroundFrame(legendFrame); - backgroundFrame.bottom += kDraggerSize; - FillRect(backgroundFrame, B_SOLID_LOW); - } - BAutolock _(fSourcesLock); font_height fontHeight; @@ -1520,9 +1452,6 @@ ActivityView::Draw(BRect updateRect) label = source->ShortLabel(); TruncateString(&label, B_TRUNCATE_MIDDLE, possibleLabelWidth); - if (drawBackground) - SetHighColor(ui_color(B_PANEL_TEXT_COLOR)); - if (be_control_look == NULL) { DrawString(label.String(), BPoint(6 + colorBox.right, y)); DrawString(text.String(), BPoint(frame.right - width, y)); diff --git a/src/apps/activitymonitor/ActivityView.h b/src/apps/activitymonitor/ActivityView.h index 4c9488ec40..82ed245d24 100644 --- a/src/apps/activitymonitor/ActivityView.h +++ b/src/apps/activitymonitor/ActivityView.h @@ -86,7 +86,6 @@ protected: virtual BSize MinSize(); #endif - virtual void FrameResized(float width, float height); virtual void MouseDown(BPoint where); virtual void MouseUp(BPoint where); virtual void MouseMoved(BPoint where, uint32 transit, @@ -101,8 +100,6 @@ private: ::Scale* _ScaleFor(scale_type type); void _Refresh(); static status_t _RefreshThread(void* self); - void _UpdateOffscreenBitmap(); - BView* _OffscreenView(); void _UpdateFrame(); BRect _HistoryFrame() const; float _LegendHeight() const; @@ -111,7 +108,7 @@ private: BRect _LegendColorFrameAt(BRect frame, int32 index) const; float _PositionForValue(DataSource* source, DataHistory* values, int64 value); - void _DrawHistory(bool drawBackground); + void _DrawHistory(); void _UpdateResolution(int32 resolution, bool broadcast = true); @@ -124,7 +121,6 @@ private: rgb_color fHistoryBackgroundColor; rgb_color fLegendBackgroundColor; - BBitmap* fOffscreen; #ifdef __HAIKU__ BLayoutItem* fHistoryLayoutItem; BLayoutItem* fLegendLayoutItem;