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:
@@ -25,6 +25,7 @@ typedef struct
|
|||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PS2_SERVICE_NOTIFY_DEVICE_ADDED = 1,
|
PS2_SERVICE_NOTIFY_DEVICE_ADDED = 1,
|
||||||
|
PS2_SERVICE_NOTIFY_DEVICE_REPUBLISH,
|
||||||
PS2_SERVICE_NOTIFY_DEVICE_REMOVED,
|
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
|
void
|
||||||
ps2_service_notify_device_removed(ps2_dev *dev)
|
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);
|
TRACE("ps2: PS2_SERVICE_NOTIFY_DEVICE_ADDED %s\n", cmd.dev->name);
|
||||||
ps2_dev_publish(cmd.dev);
|
ps2_dev_publish(cmd.dev);
|
||||||
break;
|
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:
|
case PS2_SERVICE_NOTIFY_DEVICE_REMOVED:
|
||||||
TRACE("ps2: PS2_SERVICE_NOTIFY_DEVICE_REMOVED %s\n", cmd.dev->name);
|
TRACE("ps2: PS2_SERVICE_NOTIFY_DEVICE_REMOVED %s\n", cmd.dev->name);
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ status_t ps2_service_init(void);
|
|||||||
void ps2_service_exit(void);
|
void ps2_service_exit(void);
|
||||||
|
|
||||||
void ps2_service_notify_device_added(ps2_dev *dev);
|
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);
|
void ps2_service_notify_device_removed(ps2_dev *dev);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user