Skip to content
  • Akinobu Mita's avatar
    ximagesink, xvimagesink: fix incorrect type conversion of pointer position · 6e770e0e
    Akinobu Mita authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
    I'm currently playing with modified ximagesink that does XGrabPointer()
    in order to receive the mouse events occurred outside of the window and
    send them to the navigation interface.
    
    The pointer positions usually have positive coordinates, but it could
    be negative with that change.
    
    When the ximagesink handles XEvent that contains a negative pointer
    coordinate, it incorrectly generates the GstEvent that contains an
    extremely large positive pointer coordinate.
    
    This is because the negative pointer position in XEvent is incorrectly
    converted from signed to unsigned and passed as an argument to
    gst_navigation_send_mouse_event() which causes implicit conversion from
    integer to double.  So the pointer position in the received XEvent and
    generated GstEvent are completely different.
    
    This potential problem does not seem to be a real problem with unmodified
    ximagesink but there is no reason to leave it as is.  This also fixes
    xvimagesink that has the same potential problem.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=791140
    6e770e0e