diff --git a/src/servers/app/drawing/html5/HTML5HWInterface.cpp b/src/servers/app/drawing/html5/HTML5HWInterface.cpp index 1d7f2137b2..f8576a80dd 100644 --- a/src/servers/app/drawing/html5/HTML5HWInterface.cpp +++ b/src/servers/app/drawing/html5/HTML5HWInterface.cpp @@ -136,8 +136,6 @@ HTML5HWInterface::HTML5HWInterface(const char* target) } fServer->AddHandler(handler); - //static const char desktop_html[] = "Haiku" - // ""; handler = new(std::nothrow) WebHandler("desktop.html", new(std::nothrow) BMemoryIO(desktop_html, sizeof(desktop_html) - 1)); if (handler == NULL) { @@ -146,7 +144,6 @@ HTML5HWInterface::HTML5HWInterface(const char* target) } fServer->AddHandler(handler); - //static const char haiku_js[] = "window.alert('plop');\n"; handler = new(std::nothrow) WebHandler("haiku.js", new(std::nothrow) BMemoryIO(haiku_js, sizeof(haiku_js) - 1)); if (handler == NULL) { @@ -497,14 +494,14 @@ HTML5HWInterface::SetDPMSMode(uint32 state) uint32 HTML5HWInterface::DPMSMode() { - return B_UNSUPPORTED; + return (IsConnected() ? B_DPMS_ON : B_DPMS_SUSPEND); } uint32 HTML5HWInterface::DPMSCapabilities() { - return 0; + return B_DPMS_ON | B_DPMS_SUSPEND; } @@ -526,6 +523,8 @@ void HTML5HWInterface::SetCursor(ServerCursor* cursor) { HWInterface::SetCursor(cursor); + if (!IsConnected()) + return; CanvasMessage message(NULL, fSendBuffer); message.Start(RP_SET_CURSOR); message.AddCursor(Cursor().Get()); @@ -536,6 +535,8 @@ void HTML5HWInterface::SetCursorVisible(bool visible) { HWInterface::SetCursorVisible(visible); + if (!IsConnected()) + return; CanvasMessage message(NULL, fSendBuffer); message.Start(RP_SET_CURSOR_VISIBLE); message.Add(visible); @@ -546,6 +547,8 @@ void HTML5HWInterface::MoveCursorTo(float x, float y) { HWInterface::MoveCursorTo(x, y); + if (!IsConnected()) + return; CanvasMessage message(NULL, fSendBuffer); message.Start(RP_MOVE_CURSOR_TO); message.Add(x); @@ -558,6 +561,8 @@ HTML5HWInterface::SetDragBitmap(const ServerBitmap* bitmap, const BPoint& offsetFromCursor) { HWInterface::SetDragBitmap(bitmap, offsetFromCursor); + if (!IsConnected()) + return; CanvasMessage message(NULL, fSendBuffer); message.Start(RP_SET_CURSOR); message.AddCursor(CursorAndDragBitmap().Get()); @@ -589,6 +594,8 @@ status_t HTML5HWInterface::InvalidateRegion(BRegion& region) { CanvasMessage message(NULL, fSendBuffer); + if (!IsConnected()) + return B_OK; message.Start(RP_INVALIDATE_REGION); message.AddRegion(region); return B_OK; @@ -599,6 +606,8 @@ status_t HTML5HWInterface::Invalidate(const BRect& frame) { CanvasMessage message(NULL, fSendBuffer); + if (!IsConnected()) + return B_OK; message.Start(RP_INVALIDATE_RECT); message.Add(frame); return B_OK; diff --git a/src/servers/app/drawing/html5/HTML5HWInterface.h b/src/servers/app/drawing/html5/HTML5HWInterface.h index 2d6959ba5a..dc97884539 100644 --- a/src/servers/app/drawing/html5/HTML5HWInterface.h +++ b/src/servers/app/drawing/html5/HTML5HWInterface.h @@ -89,6 +89,8 @@ typedef bool (*CallbackFunction)(void* cookie, CanvasMessage& message); void* cookie); bool RemoveCallback(uint32 token); + bool IsConnected() { return fIsConnected; } + private: callback_info* _FindCallback(uint32 token); static int _CallbackCompare(const uint32* key,