get rid of the BHandler used in DeviceManager
DeviceManager wasn't run git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20915 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -6,6 +6,8 @@
|
|||||||
** Original authors: Marcus Overhagen, Axel Dörfler
|
** Original authors: Marcus Overhagen, Axel Dörfler
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "InputServer.h"
|
||||||
|
#include "DeviceManager.h"
|
||||||
|
|
||||||
#include <Autolock.h>
|
#include <Autolock.h>
|
||||||
#include <Directory.h>
|
#include <Directory.h>
|
||||||
@@ -18,20 +20,9 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "DeviceManager.h"
|
|
||||||
#include "InputServer.h"
|
|
||||||
|
|
||||||
|
|
||||||
IAHandler::IAHandler(DeviceManager * manager)
|
|
||||||
: BHandler ("DeviceManager")
|
|
||||||
{
|
|
||||||
CALLED();
|
|
||||||
fManager = manager;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
IAHandler::MessageReceived(BMessage * msg)
|
DeviceManager::MessageReceived(BMessage * msg)
|
||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
if (msg->what == B_NODE_MONITOR) {
|
if (msg->what == B_NODE_MONITOR) {
|
||||||
@@ -49,7 +40,7 @@ IAHandler::MessageReceived(BMessage * msg)
|
|||||||
|
|
||||||
_BDeviceAddOn_ *addon = NULL;
|
_BDeviceAddOn_ *addon = NULL;
|
||||||
int32 i = 0;
|
int32 i = 0;
|
||||||
while ((addon = fManager->GetAddOn(i++)) !=NULL) {
|
while ((addon = GetAddOn(i++)) !=NULL) {
|
||||||
int32 j=0;
|
int32 j=0;
|
||||||
node_ref *dnref = NULL;
|
node_ref *dnref = NULL;
|
||||||
while ((dnref = (node_ref *)addon->fMonitoredRefs.ItemAt(j++)) != NULL) {
|
while ((dnref = (node_ref *)addon->fMonitoredRefs.ItemAt(j++)) != NULL) {
|
||||||
@@ -65,7 +56,7 @@ IAHandler::MessageReceived(BMessage * msg)
|
|||||||
case B_DEVICE_MOUNTED:
|
case B_DEVICE_MOUNTED:
|
||||||
case B_DEVICE_UNMOUNTED:
|
case B_DEVICE_UNMOUNTED:
|
||||||
default:
|
default:
|
||||||
BHandler::MessageReceived(msg);
|
BLooper::MessageReceived(msg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -74,7 +65,7 @@ IAHandler::MessageReceived(BMessage * msg)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
IAHandler::AddDirectory(const node_ref * nref, _BDeviceAddOn_ *addon)
|
DeviceManager::AddDirectory(const node_ref *nref, _BDeviceAddOn_ *addon)
|
||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
BDirectory directory(nref);
|
BDirectory directory(nref);
|
||||||
@@ -103,7 +94,7 @@ IAHandler::AddDirectory(const node_ref * nref, _BDeviceAddOn_ *addon)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
IAHandler::RemoveDirectory(const node_ref * nref, _BDeviceAddOn_ *addon)
|
DeviceManager::RemoveDirectory(const node_ref * nref, _BDeviceAddOn_ *addon)
|
||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
BDirectory directory(nref);
|
BDirectory directory(nref);
|
||||||
@@ -149,15 +140,17 @@ DeviceManager::~DeviceManager()
|
|||||||
void
|
void
|
||||||
DeviceManager::LoadState()
|
DeviceManager::LoadState()
|
||||||
{
|
{
|
||||||
fHandler = new IAHandler(this);
|
CALLED();
|
||||||
|
if (!Lock())
|
||||||
|
return;
|
||||||
|
Run();
|
||||||
|
Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
DeviceManager::SaveState()
|
DeviceManager::SaveState()
|
||||||
{
|
{
|
||||||
CALLED();
|
|
||||||
delete fHandler;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -172,9 +165,10 @@ DeviceManager::StartMonitoringDevice(_BDeviceAddOn_ *addon,
|
|||||||
BPath path("/dev");
|
BPath path("/dev");
|
||||||
if (((err = path.Append(device)) != B_OK)
|
if (((err = path.Append(device)) != B_OK)
|
||||||
|| ((err = directory.SetTo(path.Path())) != B_OK)
|
|| ((err = directory.SetTo(path.Path())) != B_OK)
|
||||||
|| ((err = directory.GetNodeRef(&nref)) != B_OK))
|
|| ((err = directory.GetNodeRef(&nref)) != B_OK)) {
|
||||||
|
PRINTERR(("DeviceManager::StartMonitoringDevice error %s: %s\n", path.Path(), strerror(err)));
|
||||||
return err;
|
return err;
|
||||||
|
}
|
||||||
// test if already monitored
|
// test if already monitored
|
||||||
bool alreadyMonitored = false;
|
bool alreadyMonitored = false;
|
||||||
_BDeviceAddOn_ *tmpaddon = NULL;
|
_BDeviceAddOn_ *tmpaddon = NULL;
|
||||||
@@ -184,6 +178,7 @@ DeviceManager::StartMonitoringDevice(_BDeviceAddOn_ *addon,
|
|||||||
node_ref *dnref = NULL;
|
node_ref *dnref = NULL;
|
||||||
while ((dnref = (node_ref *)tmpaddon->fMonitoredRefs.ItemAt(j++)) != NULL) {
|
while ((dnref = (node_ref *)tmpaddon->fMonitoredRefs.ItemAt(j++)) != NULL) {
|
||||||
if (*dnref == nref) {
|
if (*dnref == nref) {
|
||||||
|
PRINT(("StartMonitoringDevice already monitored\n"));
|
||||||
alreadyMonitored = true;
|
alreadyMonitored = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -194,7 +189,7 @@ DeviceManager::StartMonitoringDevice(_BDeviceAddOn_ *addon,
|
|||||||
|
|
||||||
// monitor if needed
|
// monitor if needed
|
||||||
if (!alreadyMonitored) {
|
if (!alreadyMonitored) {
|
||||||
if ((err = fHandler->AddDirectory(&nref, addon)) != B_OK)
|
if ((err = AddDirectory(&nref, addon)) != B_OK)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,7 +264,7 @@ DeviceManager::StopMonitoringDevice(_BDeviceAddOn_ *addon,
|
|||||||
|
|
||||||
// stop monitoring if needed
|
// stop monitoring if needed
|
||||||
if (!stillMonitored) {
|
if (!stillMonitored) {
|
||||||
if ((err = fHandler->RemoveDirectory(&nref, addon)) != B_OK)
|
if ((err = RemoveDirectory(&nref, addon)) != B_OK)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,25 +11,13 @@
|
|||||||
// Manager for devices monitoring
|
// Manager for devices monitoring
|
||||||
|
|
||||||
#include <Handler.h>
|
#include <Handler.h>
|
||||||
|
#include <Looper.h>
|
||||||
#include <Locker.h>
|
#include <Locker.h>
|
||||||
#include <InputServerDevice.h>
|
#include <InputServerDevice.h>
|
||||||
#include <InputServerFilter.h>
|
#include <InputServerFilter.h>
|
||||||
#include <InputServerMethod.h>
|
#include <InputServerMethod.h>
|
||||||
#include "TList.h"
|
#include "TList.h"
|
||||||
|
|
||||||
class DeviceManager;
|
|
||||||
|
|
||||||
class IAHandler : public BHandler {
|
|
||||||
public:
|
|
||||||
IAHandler(DeviceManager * manager);
|
|
||||||
void MessageReceived(BMessage * msg);
|
|
||||||
status_t AddDirectory(const node_ref * nref, _BDeviceAddOn_ *addon);
|
|
||||||
status_t RemoveDirectory(const node_ref * nref, _BDeviceAddOn_ *addon);
|
|
||||||
private:
|
|
||||||
DeviceManager * fManager;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
class DeviceManager : public BLooper {
|
class DeviceManager : public BLooper {
|
||||||
public:
|
public:
|
||||||
DeviceManager();
|
DeviceManager();
|
||||||
@@ -45,10 +33,15 @@ class DeviceManager : public BLooper {
|
|||||||
_BDeviceAddOn_ *GetAddOn(int32 index) {
|
_BDeviceAddOn_ *GetAddOn(int32 index) {
|
||||||
return (_BDeviceAddOn_*)fDeviceAddons.ItemAt(index);
|
return (_BDeviceAddOn_*)fDeviceAddons.ItemAt(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessageReceived(BMessage *msg);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
status_t AddDirectory(const node_ref *nref, _BDeviceAddOn_ *addon);
|
||||||
|
status_t RemoveDirectory(const node_ref *nref, _BDeviceAddOn_ *addon);
|
||||||
|
|
||||||
BList fDeviceAddons;
|
BList fDeviceAddons;
|
||||||
BLocker fLock;
|
BLocker fLock;
|
||||||
IAHandler *fHandler;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _DEVICE_MANAGER_H
|
#endif // _DEVICE_MANAGER_H
|
||||||
|
|||||||
Reference in New Issue
Block a user