ev->queue = xine_event_new_queue(ev->stream);
xine_event_create_listener_thread(ev->queue, _em_event, ev);
ev->opening = 0;
+ ev->play_ok = 1;
_em_module_event(ev, 1); /* event - open done */
}
break;
ev->delete_me = 0;
ev->get_pos_thread_deleted = 0;
ev->opening = 1;
+ ev->play_ok = 0;
if (opt)
{
ev = (Emotion_Xine_Video *)ef;
ev->play = 1;
+ ev->play_ok = 0;
ppos = malloc(sizeof(double));
*ppos = pos;
_em_slave_event(ev, 4, ppos);
ev = (Emotion_Xine_Video *)ef;
ev->play = 0;
+ ev->play_ok = 0;
_em_slave_event(ev, 5, NULL);
}
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
return (xine_get_stream_info(ev->stream, XINE_STREAM_INFO_HAS_VIDEO) &&
xine_get_stream_info(ev->stream, XINE_STREAM_INFO_VIDEO_HANDLED));
}
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
return (xine_get_stream_info(ev->stream, XINE_STREAM_INFO_HAS_AUDIO) &&
xine_get_stream_info(ev->stream, XINE_STREAM_INFO_AUDIO_HANDLED));
}
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
return xine_get_stream_info(ev->stream, XINE_STREAM_INFO_SEEKABLE);
}
xine_event_t xine_event;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return;
+ if ((ev->opening) || (!ev->play_ok)) return;
xine_event.data_length = 0;
xine_event.data = NULL;
xine_event.stream = ev->stream;
xine_input_data_t xine_input;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return;
+ if ((ev->opening) || (!ev->play_ok)) return;
xine_event.stream = ev->stream;
gettimeofday(&xine_event.tv, NULL);
xine_event.type = XINE_EVENT_INPUT_MOUSE_BUTTON;
xine_input_data_t xine_input;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return;
+ if ((ev->opening) || (!ev->play_ok)) return;
xine_event.stream = ev->stream;
gettimeofday(&xine_event.tv, NULL);
xine_event.type = XINE_EVENT_INPUT_MOUSE_MOVE;
int v;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
v = xine_get_stream_info(ev->stream, XINE_STREAM_INFO_VIDEO_CHANNELS);
if ((v < 1) &&
xine_get_stream_info(ev->stream, XINE_STREAM_INFO_HAS_VIDEO)) return 1;
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
return xine_get_param(ev->stream, XINE_PARAM_VIDEO_CHANNEL);
}
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
return xine_get_stream_info(ev->stream, XINE_STREAM_INFO_MAX_AUDIO_CHANNEL);
}
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
return xine_get_param(ev->stream, XINE_PARAM_AUDIO_CHANNEL_LOGICAL);
}
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
return (double)xine_get_param(ev->stream, XINE_PARAM_AUDIO_VOLUME) / 100.0;
}
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
return xine_get_stream_info(ev->stream, XINE_STREAM_INFO_MAX_SPU_CHANNEL);
}
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
return xine_get_param(ev->stream, XINE_PARAM_SPU_CHANNEL);
}
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return 0;
+ if (ev->opening || (!ev->play_ok)) return 0;
if (xine_get_stream_info(ev->stream, XINE_STREAM_INFO_HAS_CHAPTERS))
return 99;
return 0;
Emotion_Xine_Video *ev;
ev = (Emotion_Xine_Video *)ef;
- if (ev->opening) return NULL;
+ if ((ev->opening) || (!ev->play_ok)) return NULL;
switch (meta)
{
case META_TRACK_TITLE:
eev = buf[1];
if (eev->mtype != 0)
{
+ switch (eev->mtype)
+ {
+ case 1: /* init done */
+ ev->play_ok = 1;
+ break;
+ case 2: /* open done */
+ ev->play_ok = 1;
+ break;
+ case 3: /* shutdown done */
+ ev->play_ok = 1;
+ break;
+ case 4: /* play done */
+ ev->play_ok = 1;
+ break;
+ case 5: /* stop done */
+ ev->play_ok = 1;
+ break;
+ case 6: /* seek done */
+ ev->play_ok = 1;
+ break;
+ case 7: /* eject done */
+ ev->play_ok = 1;
+ break;
+ case 8: /* spu mute done */
+ ev->play_ok = 1;
+ break;
+ case 9: /* channel done */
+ ev->play_ok = 1;
+ break;
+ case 10: /* volume done */
+ ev->play_ok = 1;
+ break;
+ case 11: /* close done */
+ ev->play_ok = 1;
+ break;
+ default:
+ break;
+ }
}
else
{