xref: /haiku/src/servers/media/NotificationManager.h (revision ced4130fee46bc0bfb30185c43a8e19c4e9f1d07)
11299bfb2Sbeveloper /*
21299bfb2Sbeveloper  * Copyright 2002, Marcus Overhagen. All rights reserved.
31299bfb2Sbeveloper  * Distributed under the terms of the MIT License.
41299bfb2Sbeveloper  */
51d616657Sbeveloper 
6e66fda40Sbeveloper #include <MediaNode.h>
7e66fda40Sbeveloper #include "TList.h"
8e66fda40Sbeveloper 
91d616657Sbeveloper class Queue;
101d616657Sbeveloper 
11e66fda40Sbeveloper struct Notification
12e66fda40Sbeveloper {
13e66fda40Sbeveloper 	BMessenger messenger;
14e66fda40Sbeveloper 	media_node node;
15e66fda40Sbeveloper 	int32 what;
16e66fda40Sbeveloper 	team_id team;
17e66fda40Sbeveloper };
18e66fda40Sbeveloper 
191d616657Sbeveloper class NotificationManager
201d616657Sbeveloper {
211d616657Sbeveloper public:
221d616657Sbeveloper 	NotificationManager();
231d616657Sbeveloper 	~NotificationManager();
241d616657Sbeveloper 
25*ced4130fSbeveloper 	void Dump();
26*ced4130fSbeveloper 
271d616657Sbeveloper 	void EnqueueMessage(BMessage *msg);
281d616657Sbeveloper 
291d616657Sbeveloper 	void CleanupTeam(team_id team);
301d616657Sbeveloper 
311d616657Sbeveloper private:
321d616657Sbeveloper 	void RequestNotifications(BMessage *msg);
331d616657Sbeveloper 	void CancelNotifications(BMessage *msg);
341d616657Sbeveloper 	void SendNotifications(BMessage *msg);
351d616657Sbeveloper 
361d616657Sbeveloper 	void WorkerThread();
371d616657Sbeveloper 	static int32 worker_thread(void *arg);
381d616657Sbeveloper 
391d616657Sbeveloper private:
401d616657Sbeveloper 	Queue *		fNotificationQueue;
411d616657Sbeveloper 	thread_id	fNotificationThreadId;
421d616657Sbeveloper 	BLocker	*	fLocker;
43e66fda40Sbeveloper 	List<Notification> *fNotificationList;
441d616657Sbeveloper };
45