implemented republishing of devices with a 2.5sec delay. However, the new device isn't noticed by input server, don't know why.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20891 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Marcus Overhagen 2007-04-28 23:42:45 +00:00
parent 3b8715d804
commit ad6c0f399b
2 changed files with 26 additions and 0 deletions

View File

@ -25,6 +25,7 @@ typedef struct
enum
{
PS2_SERVICE_NOTIFY_DEVICE_ADDED = 1,
PS2_SERVICE_NOTIFY_DEVICE_REPUBLISH,
PS2_SERVICE_NOTIFY_DEVICE_REMOVED,
};
@ -45,6 +46,23 @@ ps2_service_notify_device_added(ps2_dev *dev)
}
void
ps2_service_notify_device_republish(ps2_dev *dev)
{
ps2_service_cmd cmd;
TRACE("ps2: ps2_service_notify_device_republish %s\n", dev->name);
cmd.id = PS2_SERVICE_NOTIFY_DEVICE_REPUBLISH;
cmd.dev = dev;
packet_buffer_write(sServiceCmdBuffer, (const uint8 *)&cmd, sizeof(cmd));
release_sem_etc(sServiceSem, 1, B_DO_NOT_RESCHEDULE);
TRACE("ps2: ps2_service_notify_device_republish done\n");
}
void
ps2_service_notify_device_removed(ps2_dev *dev)
{
@ -82,6 +100,13 @@ ps2_service_thread(void *arg)
TRACE("ps2: PS2_SERVICE_NOTIFY_DEVICE_ADDED %s\n", cmd.dev->name);
ps2_dev_publish(cmd.dev);
break;
case PS2_SERVICE_NOTIFY_DEVICE_REPUBLISH:
TRACE("ps2: PS2_SERVICE_NOTIFY_DEVICE_REPUBLISH %s\n", cmd.dev->name);
ps2_dev_unpublish(cmd.dev);
snooze(2500000);
ps2_dev_publish(cmd.dev);
break;
case PS2_SERVICE_NOTIFY_DEVICE_REMOVED:
TRACE("ps2: PS2_SERVICE_NOTIFY_DEVICE_REMOVED %s\n", cmd.dev->name);

View File

@ -17,6 +17,7 @@ status_t ps2_service_init(void);
void ps2_service_exit(void);
void ps2_service_notify_device_added(ps2_dev *dev);
void ps2_service_notify_device_republish(ps2_dev *dev);
void ps2_service_notify_device_removed(ps2_dev *dev);
#endif