Commit b28b9388 authored by Laurent Aimar's avatar Laurent Aimar

Modified the way title is updated (msw).

parent c4508cad
...@@ -275,7 +275,7 @@ static int Init( vout_thread_t *p_vout ) ...@@ -275,7 +275,7 @@ static int Init( vout_thread_t *p_vout )
} }
/* Change the window title bar text */ /* Change the window title bar text */
PostMessage( p_vout->p_sys->hwnd, WM_VLC_CHANGE_TEXT, 0, 0 ); EventThreadUpdateTitle( p_vout->p_sys->p_event, VOUT_TITLE " (Direct3D output)" );
p_vout->fmt_out.i_chroma = p_vout->output.i_chroma; p_vout->fmt_out.i_chroma = p_vout->output.i_chroma;
return VLC_SUCCESS; return VLC_SUCCESS;
......
...@@ -385,10 +385,18 @@ static int Init( vout_thread_t *p_vout ) ...@@ -385,10 +385,18 @@ static int Init( vout_thread_t *p_vout )
NewPictureVec( p_vout, p_vout->p_picture ); NewPictureVec( p_vout, p_vout->p_picture );
} }
p_vout->fmt_out.i_chroma = p_vout->output.i_chroma;
/* Change the window title bar text */ /* Change the window title bar text */
PostMessage( p_vout->p_sys->hwnd, WM_VLC_CHANGE_TEXT, 0, 0 ); const char *psz_fallback;
if( p_vout->p_sys->b_using_overlay )
psz_fallback = VOUT_TITLE " (hardware YUV overlay DirectX output)";
else if( p_vout->p_sys->b_hw_yuv )
psz_fallback = VOUT_TITLE " (hardware YUV DirectX output)";
else
psz_fallback = VOUT_TITLE " (software RGB DirectX output)";
EventThreadUpdateTitle( p_vout->p_sys->p_event, psz_fallback );
p_vout->fmt_out.i_chroma = p_vout->output.i_chroma;
return VLC_SUCCESS; return VLC_SUCCESS;
} }
......
...@@ -330,50 +330,30 @@ static void *EventThread( void *p_this ) ...@@ -330,50 +330,30 @@ static void *EventThread( void *p_this )
break; break;
case WM_VLC_CHANGE_TEXT: case WM_VLC_CHANGE_TEXT:
var_Get( p_vout, "video-title", &val );
if( !val.psz_string || !*val.psz_string ) /* Default video title */
{ {
free( val.psz_string ); vlc_mutex_lock( &p_event->lock );
wchar_t *pwz_title = NULL;
#ifdef MODULE_NAME_IS_wingdi if( p_event->psz_title )
val.psz_string = strdup( VOUT_TITLE " (WinGDI output)" );
#endif
#ifdef MODULE_NAME_IS_wingapi
val.psz_string = strdup( VOUT_TITLE " (WinGAPI output)" );
#endif
#ifdef MODULE_NAME_IS_glwin32
val.psz_string = strdup( VOUT_TITLE " (OpenGL output)" );
#endif
#ifdef MODULE_NAME_IS_direct3d
val.psz_string = strdup( VOUT_TITLE " (Direct3D output)" );
#endif
#ifdef MODULE_NAME_IS_directx
if( p_event->p_vout->p_sys->b_using_overlay ) val.psz_string =
strdup( VOUT_TITLE " (hardware YUV overlay DirectX output)" );
else if( p_event->p_vout->p_sys->b_hw_yuv ) val.psz_string =
strdup( VOUT_TITLE " (hardware YUV DirectX output)" );
else val.psz_string =
strdup( VOUT_TITLE " (software RGB DirectX output)" );
#endif
}
{ {
wchar_t *psz_title = malloc( strlen(val.psz_string) * 2 + 2 ); const size_t i_length = strlen(p_event->psz_title);
if( psz_title ) pwz_title = malloc( 2 * (i_length + 1) );
if( pwz_title )
{ {
mbstowcs( psz_title, val.psz_string, strlen(val.psz_string)*2); mbstowcs( pwz_title, p_event->psz_title, 2 * i_length );
psz_title[strlen(val.psz_string)] = 0; pwz_title[i_length] = 0;
free( val.psz_string ); val.psz_string = (char *)psz_title;
} }
} }
vlc_mutex_unlock( &p_event->lock );
SetWindowText( p_event->p_vout->p_sys->hwnd, if( pwz_title )
(LPCTSTR)val.psz_string ); {
if( p_event->p_vout->p_sys->hfswnd ) SetWindowText( p_vout->p_sys->hwnd, (LPCTSTR)pwz_title );
SetWindowText( p_event->p_vout->p_sys->hfswnd, if( p_vout->p_sys->hfswnd )
(LPCTSTR)val.psz_string ); SetWindowText( p_vout->p_sys->hfswnd, (LPCTSTR)pwz_title );
free( val.psz_string ); free( pwz_title );
}
break; break;
}
default: default:
/* Messages we don't handle directly are dispatched to the /* Messages we don't handle directly are dispatched to the
...@@ -913,6 +893,21 @@ void EventThreadMouseAutoHide( event_thread_t *p_event ) ...@@ -913,6 +893,21 @@ void EventThreadMouseAutoHide( event_thread_t *p_event )
} }
} }
} }
void EventThreadUpdateTitle( event_thread_t *p_event, const char *psz_fallback )
{
char *psz_title = var_GetNonEmptyString( p_event->p_vout, "video-title" );
if( !psz_title )
psz_title = strdup( psz_fallback );
if( !psz_title )
return;
vlc_mutex_lock( &p_event->lock );
free( p_event->psz_title );
p_event->psz_title = psz_title;
vlc_mutex_unlock( &p_event->lock );
PostMessage( p_event->p_vout->p_sys->hwnd, WM_VLC_CHANGE_TEXT, 0, 0 );
}
event_thread_t *EventThreadCreate( vout_thread_t *p_vout ) event_thread_t *EventThreadCreate( vout_thread_t *p_vout )
{ {
...@@ -936,12 +931,14 @@ event_thread_t *EventThreadCreate( vout_thread_t *p_vout ) ...@@ -936,12 +931,14 @@ event_thread_t *EventThreadCreate( vout_thread_t *p_vout )
p_event->i_lastmoved = mdate(); p_event->i_lastmoved = mdate();
p_event->i_mouse_hide_timeout = p_event->i_mouse_hide_timeout =
var_GetInteger(p_vout, "mouse-hide-timeout") * 1000; var_GetInteger(p_vout, "mouse-hide-timeout") * 1000;
p_event->psz_title = NULL;
return p_event; return p_event;
} }
void EventThreadDestroy( event_thread_t *p_event ) void EventThreadDestroy( event_thread_t *p_event )
{ {
free( p_event->psz_title );
vlc_cond_destroy( &p_event->wait ); vlc_cond_destroy( &p_event->wait );
vlc_mutex_destroy( &p_event->lock ); vlc_mutex_destroy( &p_event->lock );
free( p_event ); free( p_event );
......
...@@ -123,7 +123,7 @@ static int Init( vout_thread_t *p_vout ) ...@@ -123,7 +123,7 @@ static int Init( vout_thread_t *p_vout )
int iFormat; int iFormat;
/* Change the window title bar text */ /* Change the window title bar text */
PostMessage( p_vout->p_sys->hwnd, WM_VLC_CHANGE_TEXT, 0, 0 ); EventThreadUpdateTitle( p_vout->p_sys->p_event, VOUT_TITLE " (OpenGL output)" );
p_vout->p_sys->hGLDC = GetDC( p_vout->p_sys->hvideownd ); p_vout->p_sys->hGLDC = GetDC( p_vout->p_sys->hvideownd );
......
...@@ -42,6 +42,9 @@ typedef struct ...@@ -42,6 +42,9 @@ typedef struct
volatile mtime_t i_lastmoved; volatile mtime_t i_lastmoved;
mtime_t i_mouse_hide_timeout; mtime_t i_mouse_hide_timeout;
/* Title */
char *psz_title;
} event_thread_t; } event_thread_t;
#ifdef MODULE_NAME_IS_wingapi #ifdef MODULE_NAME_IS_wingapi
...@@ -263,6 +266,7 @@ int EventThreadStart( event_thread_t * ); ...@@ -263,6 +266,7 @@ int EventThreadStart( event_thread_t * );
void EventThreadStop( event_thread_t * ); void EventThreadStop( event_thread_t * );
void EventThreadMouseAutoHide( event_thread_t * ); void EventThreadMouseAutoHide( event_thread_t * );
void EventThreadUpdateTitle( event_thread_t *, const char *psz_fallback );
/***************************************************************************** /*****************************************************************************
* Prototypes from common.c * Prototypes from common.c
......
...@@ -270,7 +270,11 @@ static int Init( vout_thread_t *p_vout ) ...@@ -270,7 +270,11 @@ static int Init( vout_thread_t *p_vout )
PP_OUTPUTPICTURE[ I_OUTPUTPICTURES++ ] = p_pic; PP_OUTPUTPICTURE[ I_OUTPUTPICTURES++ ] = p_pic;
/* Change the window title bar text */ /* Change the window title bar text */
PostMessage( p_vout->p_sys->hwnd, WM_VLC_CHANGE_TEXT, 0, 0 ); #ifdef MODULE_NAME_IS_wingapi
EventThreadUpdateTitle( p_vout->p_sys->p_event, VOUT_TITLE " (WinGAPI output)" );
#else
EventThreadUpdateTitle( p_vout->p_sys->p_event, VOUT_TITLE " (WinGDI output)" );
#endif
UpdateRects( p_vout, true ); UpdateRects( p_vout, true );
return VLC_SUCCESS; return VLC_SUCCESS;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment