summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-03-17 18:26:56 +0100
committerwm4 <wm4@nowhere>2014-03-17 18:26:56 +0100
commit637664d95ad5e2ad72b91998dc4685bf0fe6cdeb (patch)
tree86845d85012850a58b213c7f4046b4a855dd5a2a /player
parent422af1b948135e422a13e5d58bef32e4ee38f172 (diff)
downloadmpv-637664d95ad5e2ad72b91998dc4685bf0fe6cdeb.tar.bz2
mpv-637664d95ad5e2ad72b91998dc4685bf0fe6cdeb.tar.xz
command, lua: change script_message semantics
Change script_message to broadcast the message to all clients. Add a new script_message_to command, which does what the old script_message command did. This is intended as simplification, although it might lead to chaos too.
Diffstat (limited to 'player')
-rw-r--r--player/client.c12
-rw-r--r--player/command.c10
-rw-r--r--player/lua/defaults.lua2
3 files changed, 22 insertions, 2 deletions
diff --git a/player/client.c b/player/client.c
index 675410893d..42d2fb2bb8 100644
--- a/player/client.c
+++ b/player/client.c
@@ -339,6 +339,7 @@ static void status_reply(struct mpv_handle *ctx, int event,
}
// set ev->data to a new copy of the original data
+// (done only for message types that are broadcast)
static void dup_event_data(struct mpv_event *ev)
{
switch (ev->event_id) {
@@ -346,6 +347,17 @@ static void dup_event_data(struct mpv_event *ev)
case MPV_EVENT_UNPAUSE:
ev->data = talloc_memdup(NULL, ev->data, sizeof(mpv_event_pause_reason));
break;
+ case MPV_EVENT_CLIENT_MESSAGE: {
+ struct mpv_event_client_message *src = ev->data;
+ struct mpv_event_client_message *msg =
+ talloc_zero(NULL, struct mpv_event_client_message);
+ for (int n = 0; n < src->num_args; n++) {
+ MP_TARRAY_APPEND(msg, msg->args, msg->num_args,
+ talloc_strdup(msg, src->args[n]));
+ }
+ ev->data = msg;
+ break;
+ }
default:
// Doesn't use events with memory allocation.
if (ev->data)
diff --git a/player/command.c b/player/command.c
index 0af012bb16..e15d3db54e 100644
--- a/player/command.c
+++ b/player/command.c
@@ -3370,7 +3370,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd)
break;
}
- case MP_CMD_SCRIPT_MESSAGE: {
+ case MP_CMD_SCRIPT_MESSAGE_TO: {
mpv_event_client_message *event = talloc_ptrtype(NULL, event);
*event = (mpv_event_client_message){0};
for (int n = 1; n < cmd->nargs; n++) {
@@ -3385,6 +3385,14 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd)
}
break;
}
+ case MP_CMD_SCRIPT_MESSAGE: {
+ const char *args[MP_CMD_MAX_ARGS];
+ mpv_event_client_message event = {.args = args};
+ for (int n = 0; n < cmd->nargs; n++)
+ event.args[event.num_args++] = cmd->args[n].v.s;
+ mp_client_broadcast_event(mpctx, MPV_EVENT_CLIENT_MESSAGE, &event);
+ break;
+ }
#if HAVE_SYS_MMAN_H
case MP_CMD_OVERLAY_ADD:
diff --git a/player/lua/defaults.lua b/player/lua/defaults.lua
index bd9af08f7c..fbc09d48a3 100644
--- a/player/lua/defaults.lua
+++ b/player/lua/defaults.lua
@@ -103,7 +103,7 @@ local function update_key_bindings()
local cfg = ""
for k, v in pairs(key_bindings) do
if v.forced ~= def then
- cfg = cfg .. v.key .. " script_message " .. mp.script_name
+ cfg = cfg .. v.key .. " script_message_to " .. mp.script_name
.. " " .. v.name .. "\n"
end
end