implemented add_system_beep_event()

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20711 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval 2007-04-15 20:40:12 +00:00
parent 23a805cd17
commit 33c487a43e
6 changed files with 77 additions and 7 deletions

View File

@ -74,6 +74,8 @@ enum {
MEDIA_SERVER_GET_FORMATS,
MEDIA_SERVER_MAKE_FORMAT_FOR,
MEDIA_SERVER_SYSTEM_BEEP_EVENT
};
// Raw port based communication
@ -1012,4 +1014,10 @@ struct controllable_set_parameter_data_reply : public reply_data
{
};
enum {
SYSTEM_BEEP_EVENT_INVOKE = 1,
SYSTEM_BEEP_EVENT_ADD
};
#endif // _DATA_EXCHANGE_H

View File

@ -7,13 +7,24 @@
#include <Beep.h>
#include <stdio.h>
#include "DataExchange.h"
status_t
system_beep(const char *eventName)
{
printf("beep event \"%s\" requested.\n", eventName);
// ToDo: ask media server to beep around
return B_ERROR;
BMessenger messenger("application/x-vnd.Be.media-server");
if (!messenger.IsValid())
return B_ERROR;
BMessage msg(MEDIA_SERVER_SYSTEM_BEEP_EVENT), reply;
msg.AddInt32("action", SYSTEM_BEEP_EVENT_INVOKE);
msg.AddString("event", eventName);
status_t err = messenger.SendMessage(&msg, &reply);
if ((err != B_OK)
|| (reply.FindInt32("error", &err) != B_OK))
err = B_BAD_REPLY;
return err;
}
@ -27,7 +38,18 @@ beep()
status_t
add_system_beep_event(const char *eventName, uint32 flags)
{
// ToDo: ask media server to add beep event
return B_ERROR;
BMessenger messenger("application/x-vnd.Be.media-server");
if (!messenger.IsValid())
return B_ERROR;
BMessage msg(MEDIA_SERVER_SYSTEM_BEEP_EVENT), reply;
msg.AddInt32("action", SYSTEM_BEEP_EVENT_ADD);
msg.AddString("event", eventName);
msg.AddInt32("flags", flags);
status_t err = messenger.SendMessage(&msg, &reply);
if ((err != B_OK)
|| (reply.FindInt32("error", &err) != B_OK))
err = B_BAD_REPLY;
return err;
}

View File

@ -8,7 +8,7 @@ SetSubDirSupportedPlatforms haiku libbe_test ;
# # addr_t.
#}
UsePrivateHeaders shared app ;
UsePrivateHeaders shared app media ;
MergeObject <libbe>support_kit.o :
Archivable.cpp

View File

@ -4,6 +4,7 @@
*/
#include <Application.h>
#include <Autolock.h>
#include <MediaFiles.h>
#include <string.h>
#include <storage/FindDirectory.h>
#include <storage/Path.h>
@ -363,3 +364,37 @@ MMediaFilesManager::TimerMessage()
fRunner = NULL;
}
void
MMediaFilesManager::HandleSystemBeepEvent(BMessage *msg)
{
int32 action, flags;
BString event;
status_t err = B_OK;
if ((msg->FindString("event", &event) != B_OK)
|| (msg->FindInt32("action", &action) != B_OK)) {
err = B_BAD_VALUE;
}
if (action == SYSTEM_BEEP_EVENT_ADD) {
if (msg->FindInt32("flags", &flags) != B_OK)
err = B_BAD_VALUE;
}
if (err != B_OK) {
msg->SendReply(err);
return;
}
switch (action) {
case SYSTEM_BEEP_EVENT_ADD: {
entry_ref ref;
SetRefFor(BMediaFiles::B_SOUNDS, event.String(), ref);
break;
}
case SYSTEM_BEEP_EVENT_INVOKE: {
// TODO play the sound
}
}
}

View File

@ -51,6 +51,8 @@ class MMediaFilesManager
void TimerMessage();
void HandleSystemBeepEvent(BMessage *msg);
private:
static int32 ReadPascalString(BFile &file, char **str);
static int32 WritePascalString(BFile &file, const char *str);

View File

@ -802,7 +802,10 @@ ServerApp::MessageReceived(BMessage *msg)
case MEDIA_SERVER_MAKE_FORMAT_FOR:
gFormatManager->MakeFormatFor(*msg);
break;
case MEDIA_SERVER_SYSTEM_BEEP_EVENT:
gMMediaFilesManager->HandleSystemBeepEvent(msg);
break;
default:
inherited::MessageReceived(msg);
printf("\nmedia_server: unknown message received:\n");