From 1cd452ea0362086a2cdcaf93fbec292f23ff9d78 Mon Sep 17 00:00:00 2001 From: Julian Harnath Date: Sun, 23 Aug 2015 00:29:38 +0200 Subject: [PATCH] app_server: Drawing mode fixups * TODO: squash commit before merge into master --- src/servers/app/DrawState.cpp | 11 ++++++++--- src/servers/app/DrawState.h | 4 ++-- src/servers/app/ServerPicture.cpp | 4 ++-- src/servers/app/ServerWindow.cpp | 6 ++++-- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/servers/app/DrawState.cpp b/src/servers/app/DrawState.cpp index de5c81173e..8d07c8e453 100644 --- a/src/servers/app/DrawState.cpp +++ b/src/servers/app/DrawState.cpp @@ -526,21 +526,26 @@ DrawState::SetPattern(const Pattern& pattern) } -void +bool DrawState::SetDrawingMode(drawing_mode mode) { - if (!fDrawingModeLocked) + if (!fDrawingModeLocked) { fDrawingMode = mode; + return true; + } + return false; } -void +bool DrawState::SetBlendingMode(source_alpha srcMode, alpha_function fncMode) { if (!fDrawingModeLocked) { fAlphaSrcMode = srcMode; fAlphaFncMode = fncMode; + return true; } + return false; } diff --git a/src/servers/app/DrawState.h b/src/servers/app/DrawState.h index 7e7274cdf3..6f39022b92 100644 --- a/src/servers/app/DrawState.h +++ b/src/servers/app/DrawState.h @@ -100,11 +100,11 @@ public: { return fPattern; } // drawing/blending mode - void SetDrawingMode(drawing_mode mode); + bool SetDrawingMode(drawing_mode mode); drawing_mode GetDrawingMode() const { return fDrawingMode; } - void SetBlendingMode(source_alpha srcMode, + bool SetBlendingMode(source_alpha srcMode, alpha_function fncMode); source_alpha AlphaSrcMode() const { return fAlphaSrcMode; } diff --git a/src/servers/app/ServerPicture.cpp b/src/servers/app/ServerPicture.cpp index bec689149f..20d3719c4e 100644 --- a/src/servers/app/ServerPicture.cpp +++ b/src/servers/app/ServerPicture.cpp @@ -626,8 +626,8 @@ set_pen_location(Canvas* canvas, BPoint pt) static void set_drawing_mode(Canvas* canvas, drawing_mode mode) { - canvas->CurrentState()->SetDrawingMode(mode); - canvas->GetDrawingEngine()->SetDrawingMode(mode); + if (canvas->CurrentState()->SetDrawingMode(mode)) + canvas->GetDrawingEngine()->SetDrawingMode(mode); } diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 369e13454a..b91ce89115 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -2200,7 +2200,8 @@ fDesktop->LockSingleWindow(); if (opacity != 255) { fCurrentView->CurrentState()->SetDrawingMode(B_OP_ALPHA); - fCurrentView->CurrentState()->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_COMPOSITE); + fCurrentView->CurrentState()->SetBlendingMode(B_PIXEL_ALPHA, + B_ALPHA_COMPOSITE); fCurrentView->CurrentState()->SetDrawingModeLocked(true); } @@ -3466,7 +3467,8 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver& link) if (opacity != 255) { fCurrentView->CurrentState()->SetDrawingMode(B_OP_ALPHA); - fCurrentView->CurrentState()->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_COMPOSITE); + fCurrentView->CurrentState()->SetBlendingMode(B_PIXEL_ALPHA, + B_ALPHA_COMPOSITE); fCurrentView->CurrentState()->SetDrawingModeLocked(true); }