X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvideo_filter%2Fremoteosd.c;h=9a4e6e58bd2cc0074d9336cea2b62de734b0a541;hb=001e2bb351f6b386d540a05bd0b688934d1009b4;hp=9fc04bef57d231e5084b7f342f57bd6f719c2f8a;hpb=be400691f55a66d411e9bd7787feb1f4332612f0;p=vlc diff --git a/modules/video_filter/remoteosd.c b/modules/video_filter/remoteosd.c index 9fc04bef57..9a4e6e58bd 100644 --- a/modules/video_filter/remoteosd.c +++ b/modules/video_filter/remoteosd.c @@ -6,19 +6,19 @@ * * Authors: Matthias Bauer * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implid warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /***************************************************************************** @@ -52,16 +52,12 @@ #include #include -#include -#include "vlc_filter.h" -#include "filter_common.h" -#include "vlc_image.h" -#include "vlc_osd.h" -#include "vlc_keys.h" +#include +#include /* KEY_MODIFIER_CTRL */ -#include -#include /* to encrypt password */ +#include /* net_*, htonl */ +#include /* to encrypt password */ #include #include "remoteosd_rfbproto.h" /* type definitions of the RFB protocol for VNC */ @@ -77,7 +73,7 @@ #define RMTOSD_PORT_TEXT N_("VNC Port") #define RMTOSD_PORT_LONGTEXT N_( \ - "VNC portnumber." ) + "VNC port number." ) #define RMTOSD_PASSWORD_TEXT N_("VNC Password") #define RMTOSD_PASSWORD_LONGTEXT N_( \ @@ -115,34 +111,34 @@ static int CreateFilter ( vlc_object_t * ); static void DestroyFilter( vlc_object_t * ); -vlc_module_begin(); - set_description( N_("Remote-OSD over VNC") ); - set_capability( "sub filter", 100 ); - set_shortname( N_("Remote-OSD") ); - set_category( CAT_VIDEO ); - set_subcategory( SUBCAT_VIDEO_SUBPIC ); - add_shortcut( "rmtosd" ); - set_callbacks( CreateFilter, DestroyFilter ); - - add_string( RMTOSD_CFG "host", "myvdr", NULL, RMTOSD_HOST_TEXT, - RMTOSD_HOST_LONGTEXT, false ); - add_integer_with_range( RMTOSD_CFG "port", 20001, 1, 0xFFFF, NULL, - RMTOSD_PORT_TEXT, RMTOSD_PORT_LONGTEXT, false ); - add_password( RMTOSD_CFG "password", "", NULL, RMTOSD_PASSWORD_TEXT, - RMTOSD_PASSWORD_LONGTEXT, false ); +vlc_module_begin () + set_description( N_("Remote-OSD over VNC") ) + set_capability( "sub source", 100 ) + set_shortname( N_("Remote-OSD") ) + set_category( CAT_VIDEO ) + set_subcategory( SUBCAT_VIDEO_SUBPIC ) + add_shortcut( "rmtosd" ) + set_callbacks( CreateFilter, DestroyFilter ) + + add_string( RMTOSD_CFG "host", "myvdr", RMTOSD_HOST_TEXT, + RMTOSD_HOST_LONGTEXT, false ) + add_integer_with_range( RMTOSD_CFG "port", 20001, 1, 0xFFFF, + RMTOSD_PORT_TEXT, RMTOSD_PORT_LONGTEXT, false ) + add_password( RMTOSD_CFG "password", "", RMTOSD_PASSWORD_TEXT, + RMTOSD_PASSWORD_LONGTEXT, false ) add_integer_with_range( RMTOSD_CFG "update", RMTOSD_UPDATE_DEFAULT, - RMTOSD_UPDATE_MIN, RMTOSD_UPDATE_MAX, NULL, RMTOSD_UPDATE_TEXT, - RMTOSD_UPDATE_LONGTEXT, true ); - add_bool( RMTOSD_CFG "vnc-polling", 0, NULL, - RMTOSD_POLL_TEXT , RMTOSD_POLL_LONGTEXT, false ); - add_bool( RMTOSD_CFG "mouse-events", 0, NULL, - RMTOSD_MOUSE_TEXT , RMTOSD_MOUSE_LONGTEXT, false ); - add_bool( RMTOSD_CFG "key-events", 0, NULL, - RMTOSD_KEYS_TEXT , RMTOSD_KEYS_LONGTEXT, false ); - add_integer_with_range( RMTOSD_CFG "alpha", 255, 0, 255, NULL, - RMTOSD_ALPHA_TEXT, RMTOSD_ALPHA_LONGTEXT, true ); + RMTOSD_UPDATE_MIN, RMTOSD_UPDATE_MAX, RMTOSD_UPDATE_TEXT, + RMTOSD_UPDATE_LONGTEXT, true ) + add_bool( RMTOSD_CFG "vnc-polling", false, + RMTOSD_POLL_TEXT , RMTOSD_POLL_LONGTEXT, false ) + add_bool( RMTOSD_CFG "mouse-events", false, + RMTOSD_MOUSE_TEXT , RMTOSD_MOUSE_LONGTEXT, false ) + add_bool( RMTOSD_CFG "key-events", false, + RMTOSD_KEYS_TEXT , RMTOSD_KEYS_LONGTEXT, false ) + add_integer_with_range( RMTOSD_CFG "alpha", 255, 0, 255, + RMTOSD_ALPHA_TEXT, RMTOSD_ALPHA_LONGTEXT, true ) -vlc_module_end(); +vlc_module_end () /***************************************************************************** @@ -151,20 +147,22 @@ vlc_module_end(); #define CHALLENGESIZE 16 #define MAX_VNC_SERVER_NAME_LENGTH 255 -/* subfilter functions */ +/* subsource functions */ static subpicture_t *Filter( filter_t *, mtime_t ); -static int MouseEvent ( vlc_object_t *p_this, char const *psz_var, - vlc_value_t oldval, vlc_value_t newval, void *p_data ); +static int MouseEvent( filter_t *, + const vlc_mouse_t *, + const vlc_mouse_t *, + const video_format_t * ); static int KeyEvent( vlc_object_t *p_this, char const *psz_var, vlc_value_t oldval, vlc_value_t newval, void *p_data ); static void stop_osdvnc ( filter_t *p_filter ); -static void* vnc_worker_thread ( vlc_object_t *p_thread_obj ); +static void* vnc_worker_thread ( void * ); -static void* update_request_thread( vlc_object_t *p_thread_obj ); +static void* update_request_thread( void * ); static bool open_vnc_connection ( filter_t *p_filter ); @@ -194,7 +192,7 @@ static void vnc_encrypt_bytes( unsigned char *bytes, char *passwd ); /***************************************************************************** - * Sub filter code + * Sub source code *****************************************************************************/ /***************************************************************************** @@ -202,8 +200,6 @@ static void vnc_encrypt_bytes( unsigned char *bytes, char *passwd ); *****************************************************************************/ struct filter_sys_t { - VLC_COMMON_MEMBERS - bool b_need_update; /* VNC picture is updated, do update the OSD*/ mtime_t i_vnc_poll_interval; /* Update the OSD menu every n ms */ @@ -224,13 +220,11 @@ struct filter_sys_t picture_t *p_pic; /* The picture with OSD data from VNC */ - vout_thread_t *p_vout; /* Pointer to video-out thread */ - int i_socket; /* Socket used for VNC */ uint16_t i_vnc_width; /* The with of the VNC screen */ uint16_t i_vnc_height; /* The height of the VNC screen */ - uint32_t i_vnc_pixels; /* The pixels of the VNC screen */ + uint32_t i_vnc_pixels; /* The pixels of the VNC screen */ bool b_alpha_from_vnc; /* Special ffnetdev alpha feature enabled ? */ @@ -238,7 +232,7 @@ struct filter_sys_t bool b_continue; - vlc_object_t* p_worker_thread; + vlc_thread_t worker_thread; uint8_t ar_color_table_yuv[256][4]; }; @@ -253,10 +247,9 @@ static int CreateFilter ( vlc_object_t *p_this ) msg_Dbg( p_filter, "Creating vnc osd filter..." ); - p_filter->p_sys = p_sys = malloc( sizeof(*p_sys) ); + p_filter->p_sys = p_sys = calloc( 1, sizeof(*p_sys) ); if( !p_filter->p_sys ) return VLC_ENOMEM; - memset( p_sys, 0, sizeof(*p_sys) ); /* Populating struct */ vlc_mutex_init( &p_sys->lock ); @@ -282,7 +275,7 @@ static int CreateFilter ( vlc_object_t *p_this ) p_sys->i_alpha = var_CreateGetIntegerCommand( p_this, RMTOSD_CFG "alpha" ); - /* in miliseconds, 0 disables polling, should not be lower than 100 */ + /* in milliseconds, 0 disables polling, should not be lower than 100 */ p_sys->i_vnc_poll_interval = var_CreateGetIntegerCommand( p_this, RMTOSD_CFG "update" ); if ( p_sys->i_vnc_poll_interval < 100) @@ -308,36 +301,21 @@ static int CreateFilter ( vlc_object_t *p_this ) /* Keep track of OSD Events */ p_sys->b_need_update = false; - /* Attach subpicture filter callback */ - p_filter->pf_sub_filter = Filter; + /* Attach subpicture source callback */ + p_filter->pf_sub_source = Filter; + p_filter->pf_sub_mouse = MouseEvent; - p_sys->p_vout = vlc_object_find( p_this, VLC_OBJECT_VOUT, FIND_PARENT ); + var_AddCallback( p_filter->p_libvlc, "key-pressed", KeyEvent, p_this ); - if( p_sys->p_vout ) - { - var_AddCallback( p_sys->p_vout, "mouse-moved", - MouseEvent, p_this ); - var_AddCallback( p_sys->p_vout, "mouse-button-down", - MouseEvent, p_this ); - var_AddCallback( p_sys->p_vout->p_libvlc, "key-pressed", - KeyEvent, p_this ); - } - - es_format_Init( &p_filter->fmt_out, SPU_ES, VLC_FOURCC( 's','p','u',' ' ) ); - p_filter->fmt_out.i_priority = 0; + es_format_Init( &p_filter->fmt_out, SPU_ES, VLC_CODEC_SPU ); + p_filter->fmt_out.i_priority = ES_PRIORITY_SELECTABLE_MIN; vlc_gcrypt_init(); /* create the vnc worker thread */ - p_sys->p_worker_thread = vlc_object_create( p_this, - sizeof( vlc_object_t ) ); - vlc_object_attach( p_sys->p_worker_thread, p_this ); - if( vlc_thread_create( p_sys->p_worker_thread, "vnc worker thread", - vnc_worker_thread, - VLC_THREAD_PRIORITY_LOW, false ) ) + if( vlc_clone( &p_sys->worker_thread, + vnc_worker_thread, p_filter, VLC_THREAD_PRIORITY_LOW ) ) { - vlc_object_detach( p_sys->p_worker_thread ); - vlc_object_release( p_sys->p_worker_thread ); msg_Err( p_filter, "cannot spawn vnc message reader thread" ); goto error; } @@ -371,17 +349,7 @@ static void DestroyFilter( vlc_object_t *p_this ) stop_osdvnc( p_filter ); - if( p_sys->p_vout ) - { - var_DelCallback( p_sys->p_vout, "mouse-moved", - MouseEvent, p_this ); - var_DelCallback( p_sys->p_vout, "mouse-button-down", - MouseEvent, p_this ); - var_DelCallback( p_sys->p_vout->p_libvlc, "key-pressed", - KeyEvent, p_this ); - - vlc_object_release( p_sys->p_vout ); - } + var_DelCallback( p_filter->p_libvlc, "key-pressed", KeyEvent, p_this ); var_Destroy( p_this, RMTOSD_CFG "host" ); var_Destroy( p_this, RMTOSD_CFG "port" ); @@ -402,19 +370,10 @@ static void stop_osdvnc ( filter_t *p_filter ) { filter_sys_t *p_sys = p_filter->p_sys; - /* It will unlock socket reading */ - vlc_object_kill( p_filter ); - - /* */ - if( p_sys->p_worker_thread ) - { - msg_Dbg( p_filter, "joining worker_thread" ); - vlc_object_kill( p_sys->p_worker_thread ); - vlc_thread_join( p_sys->p_worker_thread ); - vlc_object_detach( p_sys->p_worker_thread ); - vlc_object_release( p_sys->p_worker_thread ); - msg_Dbg( p_filter, "released worker_thread" ); - } + msg_Dbg( p_filter, "joining worker_thread" ); + vlc_cancel( p_sys->worker_thread ); + vlc_join( p_sys->worker_thread, NULL ); + msg_Dbg( p_filter, "released worker_thread" ); msg_Dbg( p_filter, "osdvnc stopped" ); } @@ -672,11 +631,11 @@ static bool handshaking ( filter_t *p_filter ) } -static void* vnc_worker_thread( vlc_object_t *p_thread_obj ) +static void* vnc_worker_thread( void *obj ) { - filter_t* p_filter = (filter_t*)(p_thread_obj->p_parent); + filter_t* p_filter = (filter_t*)obj; filter_sys_t *p_sys = p_filter->p_sys; - vlc_object_t *p_update_request_thread; + vlc_thread_t update_request_thread_handle; int canc = vlc_savecancel (); msg_Dbg( p_filter, "VNC worker thread started" ); @@ -689,7 +648,7 @@ static void* vnc_worker_thread( vlc_object_t *p_thread_obj ) if( !handshaking ( p_filter ) ) { - msg_Err( p_filter, "Error occured while handshaking vnc host" ); + msg_Err( p_filter, "Error occurred while handshaking vnc host" ); goto exit; } @@ -698,34 +657,29 @@ static void* vnc_worker_thread( vlc_object_t *p_thread_obj ) /* Create an empty picture for VNC the data */ vlc_mutex_lock( &p_sys->lock ); - p_sys->p_pic = picture_New( VLC_FOURCC('Y','U','V','A'), - p_sys->i_vnc_width, p_sys->i_vnc_height, VOUT_ASPECT_FACTOR ); + p_sys->p_pic = picture_New( VLC_CODEC_YUVA, + p_sys->i_vnc_width, p_sys->i_vnc_height, 1, 1 ); if( !p_sys->p_pic ) { vlc_mutex_unlock( &p_sys->lock ); goto exit; } - p_sys->i_vnc_pixels = p_sys->i_vnc_width * p_sys->i_vnc_height; + p_sys->i_vnc_pixels = p_sys->i_vnc_width * p_sys->i_vnc_height; vlc_mutex_unlock( &p_sys->lock ); /* create the update request thread */ - p_update_request_thread = vlc_object_create( p_filter, - sizeof( vlc_object_t ) ); - vlc_object_attach( p_update_request_thread, p_filter ); - if( vlc_thread_create( p_update_request_thread, - "vnc update request thread", - update_request_thread, - VLC_THREAD_PRIORITY_LOW, false ) ) + if( vlc_clone( &update_request_thread_handle, + update_request_thread, p_filter, + VLC_THREAD_PRIORITY_LOW ) ) { - vlc_object_detach( p_update_request_thread ); - vlc_object_release( p_update_request_thread ); msg_Err( p_filter, "cannot spawn vnc update request thread" ); goto exit; } /* connection is initialized, now read and handle server messages */ - while( vlc_object_alive( p_thread_obj ) ) + vlc_restorecancel (canc); + for( ;; ) { rfbServerToClientMsg msg; int i_msgSize; @@ -773,14 +727,16 @@ static void* vnc_worker_thread( vlc_object_t *p_thread_obj ) break; } } + + canc = vlc_savecancel (); process_server_message( p_filter, &msg); + vlc_restorecancel (canc); } + canc = vlc_savecancel (); msg_Dbg( p_filter, "joining update_request_thread" ); - vlc_object_kill( p_update_request_thread ); - vlc_thread_join( p_update_request_thread ); - vlc_object_detach( p_update_request_thread ); - vlc_object_release( p_update_request_thread ); + vlc_cancel( update_request_thread_handle ); + vlc_join( update_request_thread_handle, NULL ); msg_Dbg( p_filter, "released update_request_thread" ); exit: @@ -804,11 +760,17 @@ exit: return NULL; } -static void* update_request_thread( vlc_object_t *p_thread_obj ) +static void update_request_thread_cleanup( void *obj ) { - filter_t* p_filter = (filter_t*)(p_thread_obj->p_parent); + filter_t* p_filter = (filter_t*)obj; + + p_filter->p_sys->b_continue = false; +} + +static void* update_request_thread( void *obj ) +{ + filter_t* p_filter = (filter_t*)obj; filter_sys_t *p_sys = p_filter->p_sys; - int canc = vlc_savecancel (); msg_Dbg( p_filter, "VNC update request thread started" ); @@ -820,30 +782,35 @@ static void* update_request_thread( vlc_object_t *p_thread_obj ) udr.w = htons(p_sys->i_vnc_width); udr.h = htons(p_sys->i_vnc_height); - if( write_exact(p_filter, p_sys->i_socket, (char*)&udr, - sz_rfbFramebufferUpdateRequestMsg) == false) + int w; + vlc_cleanup_push( update_request_thread_cleanup, p_filter ); + w = write_exact(p_filter, p_sys->i_socket, (char*)&udr, + sz_rfbFramebufferUpdateRequestMsg); + vlc_cleanup_pop(); + + if( !w ) { msg_Err( p_filter, "Could not write rfbFramebufferUpdateRequestMsg." ); - p_sys->b_continue = false; + update_request_thread_cleanup( p_filter ); return NULL; } udr.incremental = 1; - mtime_t i_poll_interval_microsec = p_sys->i_vnc_poll_interval * 1000; if( p_sys->b_vnc_poll) { - while( vlc_object_alive( p_thread_obj ) ) + vlc_cleanup_push( update_request_thread_cleanup, p_filter ); + for( ;; ) { - msleep( i_poll_interval_microsec ); - if( write_exact(p_filter, p_sys->i_socket, (char*)&udr, - sz_rfbFramebufferUpdateRequestMsg) == false) + msleep( p_sys->i_vnc_poll_interval * 1000 ); + if( !write_exact(p_filter, p_sys->i_socket, (char*)&udr, + sz_rfbFramebufferUpdateRequestMsg)) { msg_Err( p_filter, "Could not write rfbFramebufferUpdateRequestMsg." ); break; } } - p_sys->b_continue = false; + vlc_cleanup_run(); } else { @@ -851,7 +818,6 @@ static void* update_request_thread( vlc_object_t *p_thread_obj ) } msg_Dbg( p_filter, "VNC update request thread ended" ); - vlc_restorecancel (canc); return NULL; } @@ -1029,7 +995,7 @@ static bool process_server_message ( filter_t *p_filter, msg->scme.nColours = htons(msg->scme.nColours); msg->scme.firstColour = htons(msg->scme.firstColour); int i_datasize; - if ( p_sys->b_alpha_from_vnc == true ) + if ( p_sys->b_alpha_from_vnc ) { i_datasize = 2 * msg->scme.nColours * 4; } @@ -1058,7 +1024,7 @@ static bool process_server_message ( filter_t *p_filter, for (int i = 0; i < msg->scme.nColours; i++) { i_color_index = i+msg->scme.firstColour; - if ( p_sys->b_alpha_from_vnc == true ) + if ( p_sys->b_alpha_from_vnc ) { i_alpha = p_sys->read_buffer[i_offset]; i_offset += 2; @@ -1156,22 +1122,22 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date ) /* Create new SPU region */ memset( &fmt, 0, sizeof(video_format_t) ); - fmt.i_chroma = VLC_FOURCC('Y','U','V','A'); - fmt.i_aspect = VOUT_ASPECT_FACTOR; + fmt.i_chroma = VLC_CODEC_YUVA; fmt.i_sar_num = fmt.i_sar_den = 1; fmt.i_width = fmt.i_visible_width = p_pic->p[Y_PLANE].i_visible_pitch; fmt.i_height = fmt.i_visible_height = p_pic->p[Y_PLANE].i_visible_lines; fmt.i_x_offset = fmt.i_y_offset = 0; - p_region = p_spu->pf_create_region( VLC_OBJECT(p_filter), &fmt ); + p_region = subpicture_region_New( &fmt ); if( !p_region ) { msg_Err( p_filter, "cannot allocate SPU region" ); - p_filter->pf_sub_buffer_del( p_filter, p_spu ); + subpicture_Delete( p_spu ); vlc_mutex_unlock( &p_sys->lock ); return NULL; } - vout_CopyPicture( p_filter, &p_region->picture, p_pic ); + /* FIXME the copy is probably not needed anymore */ + picture_Copy( p_region->p_picture, p_pic ); p_sys->b_need_update = false; @@ -1182,8 +1148,6 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date ) p_spu->b_absolute = false; - p_spu->i_x = 0; - p_spu->i_y = 0; p_spu->i_original_picture_width = 0; /*Let vout core do the horizontal scaling */ p_spu->i_original_picture_height = fmt.i_height; @@ -1331,38 +1295,33 @@ static inline bool raw_line( filter_sys_t* p_sys, /***************************************************************************** * MouseEvent: callback for mouse events *****************************************************************************/ -static int MouseEvent( vlc_object_t *p_this, char const *psz_var, - vlc_value_t oldval, vlc_value_t newval, void *p_data ) +static int MouseEvent( filter_t *p_filter, + const vlc_mouse_t *p_old, + const vlc_mouse_t *p_new, + const video_format_t *p_fmt ) { - VLC_UNUSED(oldval); VLC_UNUSED(newval); VLC_UNUSED(psz_var); - - filter_t *p_filter = (filter_t *)p_data; filter_sys_t *p_sys = p_filter->p_sys; + VLC_UNUSED(p_old); if( !p_sys->b_vnc_mouse_events ) return VLC_SUCCESS; - vout_thread_t *p_vout = (vout_thread_t*)p_sys->p_vout; - int i_x, i_y; - int i_v; - - - i_v = var_GetInteger( p_sys->p_vout, "mouse-button-down" ); - i_y = var_GetInteger( p_sys->p_vout, "mouse-y" ); - i_x = var_GetInteger( p_sys->p_vout, "mouse-x" ); + int i_v = p_new->i_pressed; + int i_x = p_new->i_x; + int i_y = p_new->i_y; vlc_mutex_lock( &p_sys->lock ); - const int v_h = p_vout->fmt_in.i_visible_height; + const int v_h = p_fmt->i_visible_height; const int v_w = p_sys->i_vnc_width * v_h / p_sys->i_vnc_height; - const int v_x = (p_vout->fmt_in.i_visible_width-v_w)/2; + const int v_x = (p_fmt->i_visible_width-v_w)/2; i_x -= v_x; if( i_y < 0 || i_x < 0 || i_y >= v_h || i_x >= v_w ) { vlc_mutex_unlock( &p_sys->lock ); - msg_Dbg( p_this, "invalid mouse event? x=%d y=%d btn=%x", i_x, i_y, i_v ); + msg_Dbg( p_filter, "invalid mouse event? x=%d y=%d btn=%x", i_x, i_y, i_v ); return VLC_SUCCESS; } if( !p_sys->b_connection_active ) @@ -1372,7 +1331,7 @@ static int MouseEvent( vlc_object_t *p_this, char const *psz_var, } #ifdef VNC_DEBUG - msg_Dbg( p_this, "mouse event x=%d y=%d btn=%x", i_x, i_y, i_v ); + msg_Dbg( p_filter, "mouse event x=%d y=%d btn=%x", i_x, i_y, i_v ); #endif /* */ @@ -1391,7 +1350,7 @@ static int MouseEvent( vlc_object_t *p_this, char const *psz_var, vlc_mutex_unlock( &p_sys->lock ); - return VLC_SUCCESS; + return VLC_EGENERIC; } /***************************************************************************** @@ -1408,11 +1367,11 @@ static int KeyEvent( vlc_object_t *p_this, char const *psz_var, if( !p_sys->b_vnc_key_events ) return VLC_SUCCESS; - msg_Dbg( p_this, "key pressed (%d) ", newval.i_int ); + msg_Dbg( p_this, "key pressed (%"PRId64") ", newval.i_int ); if ( !newval.i_int ) { - msg_Err( p_this, "Received invalid key event %d", newval.i_int ); + msg_Err( p_this, "Received invalid key event 0" ); return VLC_EGENERIC; }