diff --git a/headers/private/app/ServerProtocol.h b/headers/private/app/ServerProtocol.h index 0b352ee425..ac71516815 100644 --- a/headers/private/app/ServerProtocol.h +++ b/headers/private/app/ServerProtocol.h @@ -7,8 +7,8 @@ * Jérôme Duval, jerome.duval@free.fr */ -#ifndef _APPSERVER_PROTOCOL_ -#define _APPSERVER_PROTOCOL_ +#ifndef _APP_SERVER_PROTOCOL_H_ +#define _APP_SERVER_PROTOCOL_H_ #include @@ -314,27 +314,11 @@ enum { AS_SET_CURRENT_LAYER, // BDirectWindow codes - AS_DW_GET_SYNC_DATA, - AS_DW_SUPPORTS_WINDOW_MODE, - AS_DW_SET_FULLSCREEN, + AS_DIRECT_WINDOW_GET_SYNC_DATA, + AS_DIRECT_WINDOW_SUPPORTS_WINDOW_MODE, + AS_DIRECT_WINDOW_SET_FULLSCREEN, AS_LAST_CODE }; -#define AS_PATTERN_SIZE 8 -#define AS_SET_COLOR_MSG_SIZE 8+4 -#define AS_STROKE_ARC_MSG_SIZE 8+6*sizeof(float)+AS_PATTERN_SIZE -#define AS_STROKE_BEZIER_MSG_SIZE 8+8*sizeof(float)+AS_PATTERN_SIZE -#define AS_STROKE_ELLIPSE_MSG_SIZE 8+4*sizeof(float)+AS_PATTERN_SIZE -#define AS_STROKE_LINE_MSG_SIZE 8+4*sizeof(float)+AS_PATTERN_SIZE -#define AS_STROKE_RECT_MSG_SIZE 8+4*sizeof(float)+AS_PATTERN_SIZE -#define AS_STROKE_ROUNDRECT_MSG_SIZE 8+6*sizeof(float)+AS_PATTERN_SIZE -#define AS_STROKE_TRIANGLE_MSG_SIZE 8+10*sizeof(float)+AS_PATTERN_SIZE -#define AS_FILL_ARC_MSG_SIZE 8+6*sizeof(float)+AS_PATTERN_SIZE -#define AS_FILL_BEZIER_MSG_SIZE 8+8*sizeof(float)+AS_PATTERN_SIZE -#define AS_FILL_ELLIPSE_MSG_SIZE 8+4*sizeof(float)+AS_PATTERN_SIZE -#define AS_FILL_RECT_MSG_SIZE 8+4*sizeof(float)+AS_PATTERN_SIZE -#define AS_FILL_ROUNDRECT_MSG_SIZE 8+6*sizeof(float)+AS_PATTERN_SIZE -#define AS_FILL_TRIANGLE_MSG_SIZE 8+10*sizeof(float)+AS_PATTERN_SIZE - -#endif +#endif // _APP_SERVER_PROTOCOL_H_ diff --git a/src/kits/game/DirectWindow.cpp b/src/kits/game/DirectWindow.cpp index e42a51ffb3..c924aa9379 100644 --- a/src/kits/game/DirectWindow.cpp +++ b/src/kits/game/DirectWindow.cpp @@ -299,16 +299,14 @@ BDirectWindow::SetFullScreen(bool enable) a_session->sread(sizeof(status_t), &status); full_screen_enable = enable; #else - fLink->StartMessage(AS_DW_SET_FULLSCREEN); + fLink->StartMessage(AS_DIRECT_WINDOW_SET_FULLSCREEN); fLink->Attach(server_token); // useless ? fLink->Attach(enable); - int32 code; - if (fLink->FlushWithReply(code) == B_OK - && code == SERVER_TRUE) { - status = B_OK; + status_t status = B_ERROR; + if (fLink->FlushWithReply(status) == B_OK + && status == B_OK) full_screen_enable = enable; - } #endif Unlock(); @@ -337,11 +335,12 @@ BDirectWindow::SupportsWindowMode(screen_id id) return result & true; #else BPrivate::AppServerLink link; - link.StartMessage(AS_DW_SUPPORTS_WINDOW_MODE); + link.StartMessage(AS_DIRECT_WINDOW_SUPPORTS_WINDOW_MODE); link.Attach(id); + int32 reply; if (link.FlushWithReply(reply) == B_OK - && reply == SERVER_TRUE) + && reply == B_OK) return true; #endif @@ -461,7 +460,7 @@ BDirectWindow::InitData() a_session->sread(sizeof(sync_data), &sync_data); a_session->sread(sizeof(status), &status); #else - fLink->StartMessage(AS_DW_GET_SYNC_DATA); + fLink->StartMessage(AS_DIRECT_WINDOW_GET_SYNC_DATA); fLink->Attach(server_token); int32 reply; diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 8ae306c711..54559f72f0 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -1683,12 +1683,17 @@ ServerWindow::_DispatchViewMessage(int32 code, break; } - case AS_DW_GET_SYNC_DATA: - { - // TODO: Use token or get rid of it. - int32 serverToken; - link.Read(&serverToken); + // BDirectWindow communication + case AS_DIRECT_WINDOW_SUPPORTS_WINDOW_MODE: + // TODO: How to determine this? + fLink.StartMessage(B_OK); + fLink.Attach(true); + fLink.Flush(); + break; + + case AS_DIRECT_WINDOW_GET_SYNC_DATA: + { if (_EnableDirectWindowMode() == B_OK) { fLink.StartMessage(B_OK); struct dw_sync_data syncData = { @@ -2224,19 +2229,21 @@ ServerWindow::MakeWindowLayer(BRect frame, const char* name, status_t ServerWindow::_EnableDirectWindowMode() { - if (fDirectWindowData != NULL) - return B_ERROR; // already in direct window mode - + if (fDirectWindowData != NULL) { + // already in direct window mode + return B_ERROR; + } + fDirectWindowData = new (nothrow) dw_data; if (fDirectWindowData == NULL) return B_NO_MEMORY; - + if (!fDirectWindowData->IsValid()) { delete fDirectWindowData; fDirectWindowData = NULL; return B_ERROR; } - + return B_OK; }