diff --git a/src/servers/app/server/Jamfile b/src/servers/app/server/Jamfile index b2f56e6809..125d238284 100644 --- a/src/servers/app/server/Jamfile +++ b/src/servers/app/server/Jamfile @@ -19,6 +19,7 @@ Server app_server : RectUtils.cpp RGBColor.cpp SystemPalette.cpp + Utils.cpp # Manager Classes AppServer.cpp diff --git a/src/servers/app/server/ServerApp.cpp b/src/servers/app/server/ServerApp.cpp index 7d2ffb116f..f675458883 100644 --- a/src/servers/app/server/ServerApp.cpp +++ b/src/servers/app/server/ServerApp.cpp @@ -31,7 +31,6 @@ #include #include #include -#include "SMessage.h" #include "BitmapManager.h" #include "CursorManager.h" @@ -247,9 +246,8 @@ printf("ServerApp %s:Server shutdown notification received\n",app->_signature.St // because the server was asked to quit. Thus, we // ask all apps to quit. This is NOT the same as system // shutdown and will happen only in testing - BMessage *shutdown=new BMessage(B_QUIT_REQUESTED); - shutdown->fPreferred=true; - SendMessage(app->_sender,shutdown); +// BMessage *shutdown=new BMessage(B_QUIT_REQUESTED); +// SendMessage(app->_sender,shutdown); #ifdef DEBUG_SERVERAPP printf("ServerApp %s:Sent server shutdown message to BApp\n",app->_signature.String()); #endif diff --git a/src/servers/app/server/Utils.cpp b/src/servers/app/server/Utils.cpp new file mode 100644 index 0000000000..70657c3500 --- /dev/null +++ b/src/servers/app/server/Utils.cpp @@ -0,0 +1,24 @@ +#include "Utils.h" + +/*! + \brief Send a BMessage to a Looper target + \param port Receiver port of the targeted Looper + \param BMessage to send + + This SendMessage takes ownership of the message sent, so deleting them after this + call is unnecessary. Passing an invalid port will have unpredictable results. +*/ +void SendMessage(port_id port, BMessage *message) +{ + if(!message) + return; + + ssize_t flatsize=message->FlattenedSize(); + char *buffer=new char[flatsize]; + + if(message->Flatten(buffer,flatsize)==B_OK) + write_port(port, message->what, buffer,flatsize); + + delete buffer; + delete message; +} diff --git a/src/servers/app/server/Utils.h b/src/servers/app/server/Utils.h new file mode 100644 index 0000000000..7936ca446b --- /dev/null +++ b/src/servers/app/server/Utils.h @@ -0,0 +1,9 @@ +#ifndef UTILS_H_ +#define UTILS_H_ + +#include +#include + +void SendMessage(port_id port, BMessage *message); + +#endif