diff --git a/src/servers/app/Layer.cpp b/src/servers/app/Layer.cpp index 9ff91738ba..52cbfe8197 100644 --- a/src/servers/app/Layer.cpp +++ b/src/servers/app/Layer.cpp @@ -1535,9 +1535,14 @@ Layer::RequestDraw(const BRegion ®, Layer *startFrom) fOwner->cnt++; if (fOwner->cnt != 1) CRITICAL("Layer::RequestDraw(): fOwner->cnt != 1 -> Not Allowed!"); - fOwner->fCumulativeRegion.MakeEmpty(); - fOwner->fRequestSent = true; - SendUpdateMsg(fOwner->fInUpdateRegion); + fOwner->fRequestSent = true; // this is here to avoid a possible de-synchronization + if (SendUpdateMsg(fOwner->fInUpdateRegion) == B_OK) { + fOwner->fCumulativeRegion.MakeEmpty(); + } + else { + fOwner->fRequestSent = false; + fOwner->fInUpdateRegion.MakeEmpty(); + } } } } @@ -1587,9 +1592,14 @@ if (fOwner->cnt != 1) fOwner->cnt++; if (fOwner->cnt != 1) CRITICAL("Layer::RequestDraw(): fOwner->cnt != 1 -> Not Allowed!"); - fOwner->fCumulativeRegion.MakeEmpty(); - fOwner->fRequestSent = true; - SendUpdateMsg(fOwner->fInUpdateRegion); + fOwner->fRequestSent = true; // this is here to avoid a possible de-synchronization + if (SendUpdateMsg(fOwner->fInUpdateRegion) == B_OK) { + fOwner->fCumulativeRegion.MakeEmpty(); + } + else { + fOwner->fRequestSent = false; + fOwner->fInUpdateRegion.MakeEmpty(); + } } } } @@ -1765,7 +1775,7 @@ Layer::SearchForServerWindow() } //! Sends an _UPDATE_ message to the client BWindow -void +status_t Layer::SendUpdateMsg(BRegion& reg) { BMessage msg; @@ -1780,7 +1790,7 @@ Layer::SendUpdateMsg(BRegion& reg) msg.AddRect("debug_rect", reg.Frame()); // msg.AddInt32("_token",fViewToken); - fOwner->Window()->SendMessageToClient(&msg); + return Owner()->Window()->SendMessageToClient(&msg); } // AddToViewsWithInvalidCoords diff --git a/src/servers/app/Layer.h b/src/servers/app/Layer.h index 413e2d4114..54ede89dd3 100644 --- a/src/servers/app/Layer.h +++ b/src/servers/app/Layer.h @@ -372,7 +372,7 @@ friend class OffscreenWinBorder; Layer* startFrom); ServerWindow* SearchForServerWindow(); - void SendUpdateMsg(BRegion& reg); + status_t SendUpdateMsg(BRegion& reg); void AddToViewsWithInvalidCoords() const; void SendViewCoordUpdateMsg() const;