changeset 19851:adfd08588514

report mouse coordinates after movement to dvdnav; this permits to enable button selection using the mouse; patch by Jonas Jermann and me
author nicodvb
date Sat, 16 Sep 2006 15:25:31 +0000
parents 4919b3ce8d5e
children 883378e3da77
files mplayer.c stream/stream_dvdnav.c stream/stream_dvdnav.h
diffstat 3 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mplayer.c	Sat Sep 16 15:13:41 2006 +0000
+++ b/mplayer.c	Sat Sep 16 15:25:31 2006 +0000
@@ -5157,6 +5157,13 @@
         pointer_x = cmd->args[0].v.i;
         pointer_y = cmd->args[1].v.i;
         rescale_input_coordinates(pointer_x, pointer_y, &dx, &dy);
+#ifdef USE_DVDNAV
+        if(stream->type == STREAMTYPE_DVDNAV && dx > 0.0 && dy > 0.0) {
+            pointer_x = (int) (dx * (double) sh_video->disp_w);
+            pointer_y = (int) (dy * (double) sh_video->disp_h);
+            mp_dvdnav_update_mouse_pos(stream, pointer_x, pointer_y, &button);
+        }
+#endif
         break;
     }
 #ifdef USE_DVDNAV
--- a/stream/stream_dvdnav.c	Sat Sep 16 15:13:41 2006 +0000
+++ b/stream/stream_dvdnav.c	Sat Sep 16 15:25:31 2006 +0000
@@ -481,6 +481,20 @@
   return reset;
 }
 
+void mp_dvdnav_update_mouse_pos(stream_t *stream, int32_t x, int32_t y, int* button) {
+  dvdnav_priv_t * dvdnav_priv=(dvdnav_priv_t*)stream->priv;
+  dvdnav_t *nav = dvdnav_priv->dvdnav;
+  dvdnav_status_t status;
+  pci_t *pci = dvdnav_get_current_nav_pci(nav);
+
+  if(!pci) return;
+
+  status = dvdnav_mouse_select(nav, pci, x, y);
+  if(status == DVDNAV_STATUS_OK) dvdnav_get_current_highlight(nav, button);
+  else *button = -1;
+}
+
+
 stream_info_t stream_info_dvdnav = {
   "DVDNAV stream",
   "null",
--- a/stream/stream_dvdnav.h	Sat Sep 16 15:13:41 2006 +0000
+++ b/stream/stream_dvdnav.h	Sat Sep 16 15:25:31 2006 +0000
@@ -44,5 +44,6 @@
 void dvdnav_stream_fullstart(dvdnav_priv_t *dvdnav_priv);
 unsigned int * dvdnav_stream_get_palette(dvdnav_priv_t * dvdnav_priv);
 int mp_dvdnav_handle_input(stream_t *stream, int cmd, int *button);
+void mp_dvdnav_update_mouse_pos(stream_t *stream, int32_t x, int32_t y, int* button);
 
 #endif