[Mplayer-cvslog] CVS: main/input input.c, 1.98, 1.99 input.h, 1.46, 1.47
Reimar Döffinger CVS
syncmail at mplayerhq.hu
Sun Oct 10 19:39:09 CEST 2004
- Previous message: [Mplayer-cvslog] CVS: main/libaf af_comp.c, 1.3, 1.4 af_equalizer.c, 1.3, 1.4 af_extrastereo.c, 1.1, 1.2 af_format_alaw.c, 1.1, 1.2 af_format_ulaw.c, 1.1, 1.2 af_gate.c, 1.3, 1.4 af_pan.c, 1.3, 1.4 af_resample.c, 1.20, 1.21 af_resample.h, 1.2, 1.3 af_sub.c, 1.1, 1.2 af_volnorm.c, 1.1, 1.2 af_volume.c, 1.11, 1.12 config.h, 1.1, 1.2 dsp.h, 1.1, 1.2 equalizer.h, 1.1, 1.2 filter.c, 1.4, 1.5 filter.h, 1.3, 1.4 window.c, 1.2, 1.3 window.h, 1.1, 1.2
- Next message: [Mplayer-cvslog] CVS: main mplayer.c,1.793,1.794
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
CVS change done by Reimar Döffinger CVS
Update of /cvsroot/mplayer/main/input
In directory mail:/var2/tmp/cvs-serv8731/input
Modified Files:
input.c input.h
Log Message:
Do not loose commands while paused.
Index: input.c
===================================================================
RCS file: /cvsroot/mplayer/main/input/input.c,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -r1.98 -r1.99
--- input.c 15 Sep 2004 14:08:46 -0000 1.98
+++ input.c 10 Oct 2004 17:39:06 -0000 1.99
@@ -1126,7 +1126,7 @@
}
static mp_cmd_t*
-mp_input_get_queued_cmd(void) {
+mp_input_get_queued_cmd(int peek_only) {
mp_cmd_t* ret;
if(cmd_queue_length == 0)
@@ -1134,20 +1134,29 @@
ret = cmd_queue[cmd_queue_start];
+ if (!peek_only) {
cmd_queue_length--;
cmd_queue_start = (cmd_queue_start + 1) % CMD_QUEUE_SIZE;
+ }
return ret;
}
+/**
+ * \param peek_only when set, the returned command stays in the queue.
+ * Do not free the returned cmd whe you set this!
+ */
mp_cmd_t*
-mp_input_get_cmd(int time, int paused) {
+mp_input_get_cmd(int time, int paused, int peek_only) {
mp_cmd_t* ret = NULL;
mp_cmd_filter_t* cf;
+ int from_queue;
while(1) {
- ret = mp_input_get_queued_cmd();
+ from_queue = 1;
+ ret = mp_input_get_queued_cmd(peek_only);
if(ret) break;
+ from_queue = 0;
ret = mp_input_read_keys(time,paused);
if(ret) break;
ret = mp_input_read_cmds(time);
@@ -1160,6 +1169,9 @@
return NULL;
}
+ if (!from_queue && peek_only)
+ mp_input_queue_cmd(ret);
+
return ret;
}
@@ -1610,7 +1622,7 @@
int
mp_input_check_interrupt(int time) {
mp_cmd_t* cmd;
- if((cmd = mp_input_get_cmd(time,0)) == NULL)
+ if((cmd = mp_input_get_cmd(time,0,1)) == NULL)
return 0;
switch(cmd->id) {
case MP_CMD_QUIT:
@@ -1618,12 +1630,10 @@
case MP_CMD_PLAY_TREE_UP_STEP:
case MP_CMD_PLAY_ALT_SRC_STEP:
// The cmd will be executed when we are back in the main loop
- if(! mp_input_queue_cmd(cmd)) {
- mp_msg(MSGT_INPUT,MSGL_ERR,"mpdemux_check_interrupt: can't queue cmd %s\n",cmd->name);
- mp_cmd_free(cmd);
- }
return 1;
}
+ // remove the cmd from the queue
+ cmd = mp_input_get_cmd(time,0,0);
mp_cmd_free(cmd);
return 0;
}
Index: input.h
===================================================================
RCS file: /cvsroot/mplayer/main/input/input.h,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- input.h 15 Sep 2004 09:45:34 -0000 1.46
+++ input.h 10 Oct 2004 17:39:06 -0000 1.47
@@ -195,7 +195,7 @@
// This function retrieves the next available command waiting no more than time msec.
// If pause is true, the next input will always return a pause command.
mp_cmd_t*
-mp_input_get_cmd(int time, int paused);
+mp_input_get_cmd(int time, int paused, int peek_only);
mp_cmd_t*
mp_input_parse_cmd(char* str);
- Previous message: [Mplayer-cvslog] CVS: main/libaf af_comp.c, 1.3, 1.4 af_equalizer.c, 1.3, 1.4 af_extrastereo.c, 1.1, 1.2 af_format_alaw.c, 1.1, 1.2 af_format_ulaw.c, 1.1, 1.2 af_gate.c, 1.3, 1.4 af_pan.c, 1.3, 1.4 af_resample.c, 1.20, 1.21 af_resample.h, 1.2, 1.3 af_sub.c, 1.1, 1.2 af_volnorm.c, 1.1, 1.2 af_volume.c, 1.11, 1.12 config.h, 1.1, 1.2 dsp.h, 1.1, 1.2 equalizer.h, 1.1, 1.2 filter.c, 1.4, 1.5 filter.h, 1.3, 1.4 window.c, 1.2, 1.3 window.h, 1.1, 1.2
- Next message: [Mplayer-cvslog] CVS: main mplayer.c,1.793,1.794
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the MPlayer-cvslog
mailing list