commit - 83438dc0ea419cbf0de45ca9e88b421376ed87c2
commit + 9881c98ce0817889c42c9ad4146d7e1db91d7005
blob - 588dcade69d138c72e8904a546dfe0ab1cd7d2b2
blob + a2aae07b18f8dce0457f2850ee368e6509b68854
--- amused.h
+++ amused.h
struct ctl_command;
+#define MODE_ON +1
+#define MODE_OFF 0
+#define MODE_UNDEF -1
+#define MODE_TOGGLE -2
struct player_mode {
int repeat_one;
int repeat_all;
blob - e85d663a95e38a25f7fb412dafd703cf13ae6a3a
blob + 9cceb02c58723fda2af8a479d1c57b2be97b9518
--- control.c
+++ control.c
}
}
+static int
+new_mode(int val, int newval)
+{
+ if (newval == MODE_UNDEF)
+ return val;
+ if (newval == MODE_TOGGLE)
+ return !val;
+ return !!newval;
+}
+
void
control_dispatch_imsg(int fd, short event, void *bula)
{
break;
}
memcpy(&mode, imsg.data, sizeof(mode));
- if (mode.repeat_all != -1)
- repeat_all = mode.repeat_all;
- if (mode.repeat_one != -1)
- repeat_one = mode.repeat_one;
- if (mode.consume != -1)
- consume = mode.consume;
+ consume = new_mode(consume, mode.consume);
+ repeat_all = new_mode(repeat_all, mode.repeat_all);
+ repeat_one = new_mode(repeat_one, mode.repeat_one);
control_notify(imsg.hdr.type);
break;
case IMSG_CTL_BEGIN: