aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/input.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dtor@insightbb.com>2006-07-06 00:21:03 -0400
committerDmitry Torokhov <dtor@insightbb.com>2006-07-06 00:21:03 -0400
commitc7e8dc6ee6d59bf72f5478fa6355a27750e6c7d2 (patch)
treefb728aee7806ed08f23cb6e24749d3ce6030bb21 /drivers/input/input.c
parente9c8862f19958846dd0c7b39d0f6216aad6c7bee (diff)
Input: add start() method to input handlers
The new start() method is called immediately after connect() and also when "grabbed" device is released by its owner. This will allow input handlers to re-synchronize state of once-grabbed device with the rest of devices. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input/input.c')
-rw-r--r--drivers/input/input.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c
index c2e4d9bdcabf..7aeebb9071c2 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -209,8 +209,13 @@ EXPORT_SYMBOL(input_grab_device);
209 209
210void input_release_device(struct input_handle *handle) 210void input_release_device(struct input_handle *handle)
211{ 211{
212 if (handle->dev->grab == handle) 212 if (handle->dev->grab == handle) {
213 handle->dev->grab = NULL; 213 handle->dev->grab = NULL;
214
215 list_for_each_entry(handle, &handle->dev->h_list, d_node)
216 if (handle->handler->start)
217 handle->handler->start(handle);
218 }
214} 219}
215EXPORT_SYMBOL(input_release_device); 220EXPORT_SYMBOL(input_release_device);
216 221
@@ -954,8 +959,11 @@ int input_register_device(struct input_dev *dev)
954 list_for_each_entry(handler, &input_handler_list, node) 959 list_for_each_entry(handler, &input_handler_list, node)
955 if (!handler->blacklist || !input_match_device(handler->blacklist, dev)) 960 if (!handler->blacklist || !input_match_device(handler->blacklist, dev))
956 if ((id = input_match_device(handler->id_table, dev))) 961 if ((id = input_match_device(handler->id_table, dev)))
957 if ((handle = handler->connect(handler, dev, id))) 962 if ((handle = handler->connect(handler, dev, id))) {
958 input_link_handle(handle); 963 input_link_handle(handle);
964 if (handler->start)
965 handler->start(handle);
966 }
959 967
960 input_wakeup_procfs_readers(); 968 input_wakeup_procfs_readers();
961 969