|
|
|
@ -24,6 +24,7 @@ |
|
|
|
|
|
|
|
#include <vlc_common.h> |
|
|
|
#include <vlc_memstream.h> |
|
|
|
#include <vlc_dialog.h> |
|
|
|
#include "player.h" |
|
|
|
|
|
|
|
struct vlc_player_track_priv * |
|
|
|
@ -878,6 +879,51 @@ vlc_player_input_MouseFallback(struct vlc_player_input *input) |
|
|
|
vlc_player_TogglePause(player); |
|
|
|
} |
|
|
|
|
|
|
|
static void |
|
|
|
vlc_player_DisplayFrameError(vlc_player_t *player, |
|
|
|
const char *title, const char *title_error, |
|
|
|
int status) |
|
|
|
{ |
|
|
|
static const char ebusy[] = {N_("no video found")}; |
|
|
|
static const char enotusp[] = {N_("can't pause/seek/pace")}; |
|
|
|
static const char einval[] = {N_("invalid state")}; |
|
|
|
|
|
|
|
switch (status) |
|
|
|
{ |
|
|
|
case 0: |
|
|
|
vlc_player_osd_Message(player, title); |
|
|
|
break; |
|
|
|
case -EAGAIN: |
|
|
|
break; |
|
|
|
case -EBUSY: |
|
|
|
vlc_dialog_display_error(player, title_error, ebusy); |
|
|
|
break; |
|
|
|
case -ENOTSUP: |
|
|
|
vlc_dialog_display_error(player, title_error, enotusp); |
|
|
|
break; |
|
|
|
default: |
|
|
|
case -EINVAL: |
|
|
|
vlc_dialog_display_error(player, title_error, einval); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static void |
|
|
|
vlc_player_input_FrameNextStatus(struct vlc_player_input *input, int status) |
|
|
|
{ |
|
|
|
vlc_player_t *player = input->player; |
|
|
|
|
|
|
|
unsigned count; |
|
|
|
vlc_player_SendEventCount(player, on_next_frame_status, count, status); |
|
|
|
|
|
|
|
/* Don't display errors if status is handled by the player user */ |
|
|
|
if (count != 0) |
|
|
|
return; |
|
|
|
|
|
|
|
vlc_player_DisplayFrameError(player, _("Next frame"), |
|
|
|
_("Next frame error"), status); |
|
|
|
} |
|
|
|
|
|
|
|
static bool |
|
|
|
input_thread_Events(input_thread_t *input_thread, |
|
|
|
const struct vlc_input_event *event, void *user_data) |
|
|
|
@ -1100,6 +1146,10 @@ input_thread_Events(input_thread_t *input_thread, |
|
|
|
case INPUT_EVENT_MOUSE_LEFT: |
|
|
|
vlc_player_input_MouseFallback(input); |
|
|
|
break; |
|
|
|
case INPUT_EVENT_FRAME_NEXT_STATUS: |
|
|
|
vlc_player_input_FrameNextStatus(input, |
|
|
|
event->frame_next_status); |
|
|
|
break; |
|
|
|
default: |
|
|
|
handled = false; |
|
|
|
break; |
|
|
|
|