From 5f51a74f1a86ba79bbdd705cc0f1f31049c3d88b Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Wed, 2 Dec 2020 20:05:20 +0100 Subject: [PATCH] Build fix. Some code in a just merged patch needs another one that's still being discussed on Gerrit. Extract just the parts we need to get things building again. --- src/servers/app/Canvas.cpp | 18 ++++++++++-------- src/servers/app/Canvas.h | 7 +++++-- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/servers/app/Canvas.cpp b/src/servers/app/Canvas.cpp index acab142141..5307fa639c 100644 --- a/src/servers/app/Canvas.cpp +++ b/src/servers/app/Canvas.cpp @@ -57,7 +57,7 @@ Canvas::~Canvas() status_t Canvas::InitCheck() const { - if (fDrawState == NULL) + if (fDrawState.Get() == NULL) return B_NO_MEMORY; return B_OK; @@ -67,9 +67,12 @@ Canvas::InitCheck() const void Canvas::PushState() { - DrawState* newState = fDrawState->PushState(); - if (newState) - fDrawState = newState; + DrawState* previous = fDrawState.Detach(); + DrawState* newState = previous->PushState(); + if (newState == NULL) + newState = previous; + + fDrawState.SetTo(newState); } @@ -81,7 +84,7 @@ Canvas::PopState() bool rebuildClipping = fDrawState->HasAdditionalClipping(); - fDrawState = fDrawState->PopState(); + fDrawState.SetTo(fDrawState->PopState()); // rebuild clipping // (the clipping from the popped state is not effective anymore) @@ -93,7 +96,7 @@ Canvas::PopState() void Canvas::SetDrawState(DrawState* newState) { - fDrawState = newState; + fDrawState.SetTo(newState); } @@ -293,14 +296,13 @@ OffscreenCanvas::OffscreenCanvas(DrawingEngine* engine, OffscreenCanvas::~OffscreenCanvas() { - delete fDrawState; } void OffscreenCanvas::ResyncDrawState() { - fDrawingEngine->SetDrawState(fDrawState); + fDrawingEngine->SetDrawState(fDrawState.Get()); } diff --git a/src/servers/app/Canvas.h b/src/servers/app/Canvas.h index 986dceef25..981a34d5af 100644 --- a/src/servers/app/Canvas.h +++ b/src/servers/app/Canvas.h @@ -15,6 +15,7 @@ #define CANVAS_H +#include #include #include "SimpleTransform.h" @@ -42,8 +43,9 @@ public: virtual void PushState(); virtual void PopState(); - DrawState* CurrentState() const { return fDrawState; } + DrawState* CurrentState() const { return fDrawState.Get(); } void SetDrawState(DrawState* newState); + DrawState* DetachDrawState() { return fDrawState.Detach(); } void SetDrawingOrigin(BPoint origin); BPoint DrawingOrigin() const; @@ -83,7 +85,8 @@ protected: SimpleTransform& transform) const = 0; protected: - DrawState* fDrawState; + ObjectDeleter + fDrawState; };