2002-07-18 01:03:19 +00:00
|
|
|
// TestApp.cpp
|
|
|
|
|
|
|
|
|
|
#include <TestApp.h>
|
|
|
|
|
|
|
|
|
|
// TestHandler
|
|
|
|
|
|
|
|
|
|
// MessageReceived
|
|
|
|
|
void
|
2002-07-23 22:27:43 +00:00
|
|
|
BTestHandler::MessageReceived(BMessage *message)
|
2002-07-18 01:03:19 +00:00
|
|
|
{
|
|
|
|
|
// clone and push it
|
|
|
|
|
BMessage *clone = new BMessage(*message);
|
|
|
|
|
fQueue.Lock();
|
|
|
|
|
fQueue.AddMessage(clone);
|
|
|
|
|
fQueue.Unlock();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Queue
|
|
|
|
|
BMessageQueue &
|
2002-07-23 22:27:43 +00:00
|
|
|
BTestHandler::Queue()
|
2002-07-18 01:03:19 +00:00
|
|
|
{
|
|
|
|
|
return fQueue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TestApp
|
|
|
|
|
|
|
|
|
|
// constructor
|
2002-07-23 22:27:43 +00:00
|
|
|
BTestApp::BTestApp(const char *signature)
|
2002-07-18 01:03:19 +00:00
|
|
|
: BApplication(signature),
|
|
|
|
|
fAppThread(B_ERROR),
|
|
|
|
|
fHandler()
|
|
|
|
|
{
|
|
|
|
|
AddHandler(&fHandler);
|
|
|
|
|
Unlock();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Init
|
|
|
|
|
status_t
|
2002-07-23 22:27:43 +00:00
|
|
|
BTestApp::Init()
|
2002-07-18 01:03:19 +00:00
|
|
|
{
|
|
|
|
|
status_t error = B_OK;
|
|
|
|
|
fAppThread = spawn_thread(&_AppThreadStart, "query app",
|
|
|
|
|
B_NORMAL_PRIORITY, this);
|
|
|
|
|
if (fAppThread < 0)
|
|
|
|
|
error = fAppThread;
|
|
|
|
|
else {
|
|
|
|
|
error = resume_thread(fAppThread);
|
|
|
|
|
if (error != B_OK)
|
|
|
|
|
kill_thread(fAppThread);
|
|
|
|
|
}
|
|
|
|
|
if (error != B_OK)
|
|
|
|
|
fAppThread = B_ERROR;
|
|
|
|
|
return error;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Terminate
|
|
|
|
|
void
|
2002-07-23 22:27:43 +00:00
|
|
|
BTestApp::Terminate()
|
2002-07-18 01:03:19 +00:00
|
|
|
{
|
|
|
|
|
PostMessage(B_QUIT_REQUESTED, this);
|
|
|
|
|
int32 result;
|
|
|
|
|
wait_for_thread(fAppThread, &result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ReadyToRun
|
|
|
|
|
void
|
2002-07-23 22:27:43 +00:00
|
|
|
BTestApp::ReadyToRun()
|
2002-07-18 01:03:19 +00:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Handler
|
2002-07-23 22:27:43 +00:00
|
|
|
BTestHandler &
|
|
|
|
|
BTestApp::Handler()
|
2002-07-18 01:03:19 +00:00
|
|
|
{
|
|
|
|
|
return fHandler;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// _AppThreadStart
|
|
|
|
|
int32
|
2002-07-23 22:27:43 +00:00
|
|
|
BTestApp::_AppThreadStart(void *data)
|
2002-07-18 01:03:19 +00:00
|
|
|
{
|
2002-07-23 22:27:43 +00:00
|
|
|
if (BTestApp *app = (BTestApp*)data) {
|
2002-07-18 01:03:19 +00:00
|
|
|
app->Lock();
|
|
|
|
|
app->Run();
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|