From f8969c78e533f608ddc3192e05fb9e4258451cc6 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 26 Jan 2020 11:23:41 +0100 Subject: [PATCH] DeskCalc: use an autolock to simplify clipboard handling. --- src/apps/deskcalc/CalcView.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/apps/deskcalc/CalcView.cpp b/src/apps/deskcalc/CalcView.cpp index a845ccf100..e376d524ba 100644 --- a/src/apps/deskcalc/CalcView.cpp +++ b/src/apps/deskcalc/CalcView.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -174,6 +175,9 @@ struct CalcView::CalcKey { }; +typedef AutoLocker ClipboardLocker; + + CalcView* CalcView::Instantiate(BMessage* archive) { @@ -344,14 +348,16 @@ CalcView::MessageReceived(BMessage* message) // handle paste case B_PASTE: + { // access system clipboard - if (be_clipboard->Lock()) { + ClipboardLocker locker(be_clipboard); + if (locker.Lock()) { BMessage* clipper = be_clipboard->Data(); - //clipper->PrintToStream(); - Paste(clipper); - be_clipboard->Unlock(); + if (clipper) + Paste(clipper); } break; + } // (replicant) about box requested case B_ABOUT_REQUESTED: @@ -802,7 +808,8 @@ void CalcView::Copy() { // access system clipboard - if (!be_clipboard->Lock()) + ClipboardLocker locker(be_clipboard); + if (!locker.Lock()) return; if (be_clipboard->Clear() != B_OK) return; @@ -818,7 +825,6 @@ CalcView::Copy() clipper->what = B_MIME_DATA; be_clipboard->Commit(); } - be_clipboard->Unlock(); }