summaryrefslogtreecommitdiffstats
path: root/player/client.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-11-23 15:08:49 +0100
committerwm4 <wm4@nowhere>2014-11-23 15:13:35 +0100
commitae5df9be98e4193342321f30285655fcf88e7e63 (patch)
tree3f327acc1c25f3e48bebfc13c0d0061823c282e0 /player/client.c
parent7b47f12f8f1cae385060741e4e7f758297515225 (diff)
downloadmpv-ae5df9be98e4193342321f30285655fcf88e7e63.tar.bz2
mpv-ae5df9be98e4193342321f30285655fcf88e7e63.tar.xz
input, lua: redo input handling
Much of it is the same, but now there's the possibility to distinguish key down/up events in the Lua API.
Diffstat (limited to 'player/client.c')
-rw-r--r--player/client.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/player/client.c b/player/client.c
index 97bb215464..d01c611a3d 100644
--- a/player/client.c
+++ b/player/client.c
@@ -589,9 +589,16 @@ void mp_client_broadcast_event(struct MPContext *mpctx, int event, void *data)
pthread_mutex_unlock(&clients->lock);
}
+// If client_name == NULL, then broadcast and free the event.
int mp_client_send_event(struct MPContext *mpctx, const char *client_name,
int event, void *data)
{
+ if (!client_name) {
+ mp_client_broadcast_event(mpctx, event, data);
+ talloc_free(data);
+ return 0;
+ }
+
struct mp_client_api *clients = mpctx->clients;
int r = 0;
@@ -615,6 +622,23 @@ int mp_client_send_event(struct MPContext *mpctx, const char *client_name,
return r;
}
+int mp_client_send_event_dup(struct MPContext *mpctx, const char *client_name,
+ int event, void *data)
+{
+ if (!client_name) {
+ mp_client_broadcast_event(mpctx, event, data);
+ return 0;
+ }
+
+ struct mpv_event event_data = {
+ .event_id = event,
+ .data = data,
+ };
+
+ dup_event_data(&event_data);
+ return mp_client_send_event(mpctx, client_name, event, event_data.data);
+}
+
int mpv_request_event(mpv_handle *ctx, mpv_event_id event, int enable)
{
if (!mpv_event_name(event) || enable < 0 || enable > 1)