From 8f3f25cf639fbce2117e53f2bdcab62c2c4b4e5c Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Wed, 4 Jan 2006 12:15:58 +0000 Subject: [PATCH] Merged the four AS_LAYER_DRAW_BITMAP handlers into just one handler git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15842 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/app/ServerProtocol.h | 5 +--- src/kits/interface/View.cpp | 42 +++++++--------------------- src/servers/app/ServerWindow.cpp | 33 ++-------------------- 3 files changed, 14 insertions(+), 66 deletions(-) diff --git a/headers/private/app/ServerProtocol.h b/headers/private/app/ServerProtocol.h index d76b671a77..a785f3ac9e 100644 --- a/headers/private/app/ServerProtocol.h +++ b/headers/private/app/ServerProtocol.h @@ -289,10 +289,7 @@ enum { AS_LAYER_PRINT_ALIASING, AS_LAYER_CLIP_TO_PICTURE, AS_LAYER_GET_CLIP_REGION, - AS_LAYER_DRAW_BITMAP_ASYNC_IN_RECT, - AS_LAYER_DRAW_BITMAP_ASYNC_AT_POINT, - AS_LAYER_DRAW_BITMAP_SYNC_IN_RECT, - AS_LAYER_DRAW_BITMAP_SYNC_AT_POINT, + AS_LAYER_DRAW_BITMAP, AS_LAYER_SET_EVENT_MASK, AS_LAYER_SET_MOUSE_EVENT_MASK, diff --git a/src/kits/interface/View.cpp b/src/kits/interface/View.cpp index 4c00f1c73c..44307ab6f6 100644 --- a/src/kits/interface/View.cpp +++ b/src/kits/interface/View.cpp @@ -2236,7 +2236,7 @@ BView::DrawBitmapAsync(const BBitmap *bitmap, BRect srcRect, BRect dstRect) if (fOwner) { check_lock(); - fOwner->fLink->StartMessage(AS_LAYER_DRAW_BITMAP_ASYNC_IN_RECT); + fOwner->fLink->StartMessage(AS_LAYER_DRAW_BITMAP); fOwner->fLink->Attach(bitmap->get_server_token()); fOwner->fLink->Attach(dstRect); fOwner->fLink->Attach(srcRect); @@ -2247,9 +2247,6 @@ BView::DrawBitmapAsync(const BBitmap *bitmap, BRect srcRect, BRect dstRect) void BView::DrawBitmapAsync(const BBitmap *bitmap, BRect dstRect) { - if (!bitmap || !dstRect.IsValid()) - return; - DrawBitmapAsync(bitmap, bitmap->Bounds(), dstRect); } @@ -2270,9 +2267,12 @@ BView::DrawBitmapAsync(const BBitmap *bitmap, BPoint where) if (fOwner) { check_lock(); - fOwner->fLink->StartMessage(AS_LAYER_DRAW_BITMAP_ASYNC_AT_POINT); + fOwner->fLink->StartMessage(AS_LAYER_DRAW_BITMAP); fOwner->fLink->Attach(bitmap->get_server_token()); - fOwner->fLink->Attach(where); + BRect src = bitmap->Bounds(); + BRect dst = src.OffsetToCopy(where); + fOwner->fLink->Attach(dst); + fOwner->fLink->Attach(src); } } @@ -2287,26 +2287,14 @@ BView::DrawBitmap(const BBitmap *bitmap) void BView::DrawBitmap(const BBitmap *bitmap, BPoint where) { - if (bitmap == NULL) - return; - - if (fOwner) { - check_lock(); - - fOwner->fLink->StartMessage(AS_LAYER_DRAW_BITMAP_SYNC_AT_POINT); - fOwner->fLink->Attach(bitmap->get_server_token()); - fOwner->fLink->Attach(where); - fOwner->fLink->Flush(); - } + DrawBitmapAsync(bitmap, where); + Sync(); } void BView::DrawBitmap(const BBitmap *bitmap, BRect dstRect) { - if (!bitmap || !dstRect.IsValid()) - return; - DrawBitmap(bitmap, bitmap->Bounds(), dstRect); } @@ -2314,18 +2302,8 @@ BView::DrawBitmap(const BBitmap *bitmap, BRect dstRect) void BView::DrawBitmap(const BBitmap *bitmap, BRect srcRect, BRect dstRect) { - if ( !bitmap || !srcRect.IsValid() || !dstRect.IsValid()) - return; - - if (fOwner) { - check_lock(); - - fOwner->fLink->StartMessage(AS_LAYER_DRAW_BITMAP_SYNC_IN_RECT); - fOwner->fLink->Attach(bitmap->get_server_token()); - fOwner->fLink->Attach(dstRect); - fOwner->fLink->Attach(srcRect); - fOwner->fLink->Flush(); - } + DrawBitmapAsync(bitmap, srcRect, dstRect); + Sync(); } diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index bbe52f5269..27dcf00d57 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -1935,34 +1935,9 @@ ServerWindow::_DispatchViewDrawingMessage(int32 code, BPrivate::LinkReceiver &li drawingEngine->FillRect(rect, fCurrentLayer->CurrentState()); break; } - case AS_LAYER_DRAW_BITMAP_SYNC_AT_POINT: - case AS_LAYER_DRAW_BITMAP_ASYNC_AT_POINT: + case AS_LAYER_DRAW_BITMAP: { - DTRACE(("ServerWindow %s: Message AS_LAYER_DRAW_BITMAP_(A)SYNC_AT_POINT: ViewLayer name: %s\n", fTitle, fCurrentLayer->Name())); - int32 bitmapToken; - BPoint point; - link.Read(&bitmapToken); - link.Read(&point); - - ServerBitmap* bitmap = fServerApp->FindBitmap(bitmapToken); - if (bitmap) { - BRect src = bitmap->Bounds(); - BRect dst = src.OffsetToCopy(point); - fCurrentLayer->ConvertToScreenForDrawing(&dst); - - drawingEngine->DrawBitmap(bitmap, src, dst, fCurrentLayer->CurrentState()); - } - - // TODO: how should AS_LAYER_DRAW_BITMAP_SYNC_AT_POINT sync with the client? - // It Doesn't have to. Sync means: force a sync of the view/link, so that - // the bitmap is already drawn when the "BView::DrawBitmap()" call returns. - // If this is ever possible. - break; - } - case AS_LAYER_DRAW_BITMAP_SYNC_IN_RECT: - case AS_LAYER_DRAW_BITMAP_ASYNC_IN_RECT: - { - DTRACE(("ServerWindow %s: Message AS_LAYER_DRAW_BITMAP_(A)SYNC_IN_RECT: ViewLayer name: %s\n", fTitle, fCurrentLayer->Name())); + DTRACE(("ServerWindow %s: Message AS_LAYER_DRAW_BITMAP: ViewLayer name: %s\n", fTitle, fCurrentLayer->Name())); int32 bitmapToken; BRect srcRect, dstRect; @@ -1977,7 +1952,6 @@ ServerWindow::_DispatchViewDrawingMessage(int32 code, BPrivate::LinkReceiver &li drawingEngine->DrawBitmap(bitmap, srcRect, dstRect, fCurrentLayer->CurrentState()); } - // TODO: how should AS_LAYER_DRAW_BITMAP_SYNC_IN_RECT sync with the client? break; } case AS_STROKE_ARC: @@ -2248,8 +2222,7 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver &link) break; } - case AS_LAYER_DRAW_BITMAP_SYNC_IN_RECT: - case AS_LAYER_DRAW_BITMAP_ASYNC_IN_RECT: + case AS_LAYER_DRAW_BITMAP: { int32 token; link.Read(&token);