DeskCalc: use an autolock to simplify clipboard handling.

This commit is contained in:
Adrien Destugues
2020-01-26 11:23:41 +01:00
parent 190d0372b3
commit f8969c78e5
+12 -6
View File
@@ -23,6 +23,7 @@
#include <Alert.h> #include <Alert.h>
#include <Application.h> #include <Application.h>
#include <AppFileInfo.h> #include <AppFileInfo.h>
#include <AutoLocker.h>
#include <Beep.h> #include <Beep.h>
#include <Bitmap.h> #include <Bitmap.h>
#include <Catalog.h> #include <Catalog.h>
@@ -174,6 +175,9 @@ struct CalcView::CalcKey {
}; };
typedef AutoLocker<BClipboard> ClipboardLocker;
CalcView* CalcView*
CalcView::Instantiate(BMessage* archive) CalcView::Instantiate(BMessage* archive)
{ {
@@ -344,14 +348,16 @@ CalcView::MessageReceived(BMessage* message)
// handle paste // handle paste
case B_PASTE: case B_PASTE:
{
// access system clipboard // access system clipboard
if (be_clipboard->Lock()) { ClipboardLocker locker(be_clipboard);
if (locker.Lock()) {
BMessage* clipper = be_clipboard->Data(); BMessage* clipper = be_clipboard->Data();
//clipper->PrintToStream(); if (clipper)
Paste(clipper); Paste(clipper);
be_clipboard->Unlock();
} }
break; break;
}
// (replicant) about box requested // (replicant) about box requested
case B_ABOUT_REQUESTED: case B_ABOUT_REQUESTED:
@@ -802,7 +808,8 @@ void
CalcView::Copy() CalcView::Copy()
{ {
// access system clipboard // access system clipboard
if (!be_clipboard->Lock()) ClipboardLocker locker(be_clipboard);
if (!locker.Lock())
return; return;
if (be_clipboard->Clear() != B_OK) if (be_clipboard->Clear() != B_OK)
return; return;
@@ -818,7 +825,6 @@ CalcView::Copy()
clipper->what = B_MIME_DATA; clipper->what = B_MIME_DATA;
be_clipboard->Commit(); be_clipboard->Commit();
} }
be_clipboard->Unlock();
} }