From 4d9e21b8244316acd9518dd1f607bd90b4a90cd2 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Tue, 21 Nov 2017 21:19:49 +0100 Subject: [PATCH] Remote{Message|DrawingEngine}: Add some more debug output. --- .../interface/remote/RemoteDrawingEngine.cpp | 27 +++++++++++++-- .../interface/remote/RemoteMessage.cpp | 34 +++++++++++++++---- 2 files changed, 52 insertions(+), 9 deletions(-) diff --git a/src/servers/app/drawing/interface/remote/RemoteDrawingEngine.cpp b/src/servers/app/drawing/interface/remote/RemoteDrawingEngine.cpp index c9df5e58bf..a279f5e233 100644 --- a/src/servers/app/drawing/interface/remote/RemoteDrawingEngine.cpp +++ b/src/servers/app/drawing/interface/remote/RemoteDrawingEngine.cpp @@ -1011,19 +1011,40 @@ RemoteDrawingEngine::_DrawingEngineResult(void* cookie, RemoteMessage& message) switch (message.Code()) { case RP_DRAW_STRING_RESULT: - if (message.Read(engine->fDrawStringResult) != B_OK) + { + status_t result = message.Read(engine->fDrawStringResult); + if (result != B_OK) { + TRACE_ERROR("failed to read draw string result: %s\n", + strerror(result)); return false; + } + break; + } case RP_STRING_WIDTH_RESULT: - if (message.Read(engine->fStringWidthResult) != B_OK) + { + status_t result = message.Read(engine->fStringWidthResult); + if (result != B_OK) { + TRACE_ERROR("failed to read string width result: %s\n", + strerror(result)); return false; + } + break; + } case RP_READ_BITMAP_RESULT: - if (message.ReadBitmap(&engine->fReadBitmapResult) != B_OK) + { + status_t result = message.ReadBitmap(&engine->fReadBitmapResult); + if (result != B_OK) { + TRACE_ERROR("failed to read bitmap of read bitmap result: %s\n", + strerror(result)); return false; + } + break; + } default: return false; diff --git a/src/servers/app/drawing/interface/remote/RemoteMessage.cpp b/src/servers/app/drawing/interface/remote/RemoteMessage.cpp index 15bb455e57..178747355f 100644 --- a/src/servers/app/drawing/interface/remote/RemoteMessage.cpp +++ b/src/servers/app/drawing/interface/remote/RemoteMessage.cpp @@ -28,27 +28,49 @@ #include +#ifdef CLIENT_COMPILE +#define TRACE_ALWAYS(x...) printf("RemoteMessage: " x) +#else +#define TRACE_ALWAYS(x...) debug_printf("RemoteMessage: " x) +#endif + +#define TRACE(x...) /*TRACE_ALWAYS(x)*/ +#define TRACE_ERROR(x...) TRACE_ALWAYS(x) + + status_t RemoteMessage::NextMessage(uint16& code) { if (fDataLeft > 0) { // discard remainder of message int32 readSize = fSource->Read(NULL, fDataLeft); - if (readSize < 0) + if (readSize < 0) { + TRACE_ERROR("failed to read from source: %s\n", strerror(readSize)); return readSize; + } } static const uint32 kHeaderSize = sizeof(uint16) + sizeof(uint32); fDataLeft = kHeaderSize; - Read(code); - uint32 dataLeft; - status_t result = Read(dataLeft); - if (result != B_OK) + status_t result = Read(code); + if (result != B_OK) { + TRACE_ERROR("failed to read message code: %s\n", strerror(result)); return result; + } - if (dataLeft < kHeaderSize) + uint32 dataLeft; + result = Read(dataLeft); + if (result != B_OK) { + TRACE_ERROR("failed to read message length: %s\n", strerror(result)); + return result; + } + + if (dataLeft < kHeaderSize) { + TRACE_ERROR("message claims %" B_PRIu32 " bytes, needed at least %" + B_PRIu32 " for the header\n", dataLeft, kHeaderSize); return B_ERROR; + } fDataLeft = dataLeft - kHeaderSize; fCode = code;