Commit b3c3a1c1 authored by Clément Stenac's avatar Clément Stenac

* Patch by Gregory Hazel :

  - Fix gui flickering on video size change
  - provide a no-auto-resize mode 

* Patch by Christophe Mutricy : fix M3U export

Thanks to both !
parent 57f7ae15
...@@ -25,6 +25,7 @@ Bruno Vella <allevb at tin.it> - Italian localization ...@@ -25,6 +25,7 @@ Bruno Vella <allevb at tin.it> - Italian localization
Carlo Calabr <murray at via.ecp.fr> - Italian localization Carlo Calabr <murray at via.ecp.fr> - Italian localization
Carsten Gottbeht <gottbehuet at active-elements dot de> - v4l hotplug fix Carsten Gottbeht <gottbehuet at active-elements dot de> - v4l hotplug fix
Christof Baumgaertner - dbox web intf Christof Baumgaertner - dbox web intf
Christophe Mutricy <xtophe at nxtelevision dot com>- many fixes (preferences, M3U, ...)
Christopher Johnson <cjohnson at mint.net> - Qt fix in vlc.spec Christopher Johnson <cjohnson at mint.net> - Qt fix in vlc.spec
Colin Simmonds <colin_simmonds at Mac.lover.org> - compile fix for Mac OS X Colin Simmonds <colin_simmonds at Mac.lover.org> - compile fix for Mac OS X
Damian Ivereigh <damian at cisco.com> - ac3dec uninitialized data structure fix Damian Ivereigh <damian at cisco.com> - ac3dec uninitialized data structure fix
...@@ -39,6 +40,7 @@ Ethan C. Baldridge <BaldridgeE at cadmus.com> - directory browsing code ...@@ -39,6 +40,7 @@ Ethan C. Baldridge <BaldridgeE at cadmus.com> - directory browsing code
Felix Khne <fkuehne at users.sf.net> - German translation Felix Khne <fkuehne at users.sf.net> - German translation
Frank Chao <frank0624 at gmail.com> - Chinese Traditional translation Frank Chao <frank0624 at gmail.com> - Chinese Traditional translation
Fumio Nakayama <endymion at ca2.so-net.ne.jp> - Japanese translation Fumio Nakayama <endymion at ca2.so-net.ne.jp> - Japanese translation
Gregory Hazel <ghazel et gmail dot com> - wxWidgets fixes and improvements
Goetz Waschk <waschk at informatik.uni-rostock dot de> - Mandrake packages Goetz Waschk <waschk at informatik.uni-rostock dot de> - Mandrake packages
Haakon Meland Eriksen - Norwegian translation Haakon Meland Eriksen - Norwegian translation
Hans-Peter Jansen <hpj at urpla.net> - patch for module options handling Hans-Peter Jansen <hpj at urpla.net> - patch for module options handling
......
...@@ -210,6 +210,8 @@ BEGIN_EVENT_TABLE(Interface, wxFrame) ...@@ -210,6 +210,8 @@ BEGIN_EVENT_TABLE(Interface, wxFrame)
/* Custom events */ /* Custom events */
EVT_COMMAND(0, wxEVT_INTF, Interface::OnControlEvent) EVT_COMMAND(0, wxEVT_INTF, Interface::OnControlEvent)
EVT_COMMAND(1, wxEVT_INTF, Interface::OnControlEvent) EVT_COMMAND(1, wxEVT_INTF, Interface::OnControlEvent)
EVT_TIMER(ID_CONTROLS_TIMER, Interface::OnControlsTimer)
END_EVENT_TABLE() END_EVENT_TABLE()
/***************************************************************************** /*****************************************************************************
...@@ -300,6 +302,8 @@ Interface::Interface( intf_thread_t *_p_intf, long style ): ...@@ -300,6 +302,8 @@ Interface::Interface( intf_thread_t *_p_intf, long style ):
SetupHotkeys(); SetupHotkeys();
m_controls_timer.SetOwner(this, ID_CONTROLS_TIMER);
/* Start timer */ /* Start timer */
timer = new Timer( p_intf, this ); timer = new Timer( p_intf, this );
...@@ -356,8 +360,15 @@ void Interface::OnControlEvent( wxCommandEvent& event ) ...@@ -356,8 +360,15 @@ void Interface::OnControlEvent( wxCommandEvent& event )
switch( event.GetId() ) switch( event.GetId() )
{ {
case 0: case 0:
{
int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
if (size_to_video)
{
frame_sizer->Layout(); frame_sizer->Layout();
frame_sizer->Fit(this); frame_sizer->Fit(this);
}
}
break; break;
case 1: case 1:
...@@ -670,6 +681,28 @@ void Interface::SetupHotkeys() ...@@ -670,6 +681,28 @@ void Interface::SetupHotkeys()
* Event Handlers. * Event Handlers.
*****************************************************************************/ *****************************************************************************/
void Interface::OnControlsTimer(wxTimerEvent& WXUNUSED(event))
{
int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
/* Hide slider and Disc Buttons */
disc_frame->Hide();
slider_sizer->Hide( disc_frame );
slider_sizer->Layout();
if (size_to_video)
{
slider_sizer->Fit( slider_frame );
}
slider_frame->Hide();
frame_sizer->Hide( slider_frame );
frame_sizer->Layout();
if (size_to_video)
{
frame_sizer->Fit( this );
}
}
void Interface::OnMenuOpen(wxMenuEvent& event) void Interface::OnMenuOpen(wxMenuEvent& event)
{ {
#if defined( __WXMSW__ ) #if defined( __WXMSW__ )
...@@ -854,7 +887,11 @@ void Interface::OnExtended(wxCommandEvent& event) ...@@ -854,7 +887,11 @@ void Interface::OnExtended(wxCommandEvent& event)
fprintf(stderr,"Creating window\n"); fprintf(stderr,"Creating window\n");
extra_frame->Hide(); extra_frame->Hide();
frame_sizer->Hide( extra_frame ); frame_sizer->Hide( extra_frame );
#if (wxCHECK_VERSION(2,5,0))
frame_sizer->Detach( extra_frame ); frame_sizer->Detach( extra_frame );
#else
frame_sizer->Remove( extra_frame );
#endif
frame_sizer->Layout(); frame_sizer->Layout();
frame_sizer->Fit(this); frame_sizer->Fit(this);
extra_window = new ExtraWindow( p_intf, this, extra_frame ); extra_window = new ExtraWindow( p_intf, this, extra_frame );
...@@ -898,7 +935,11 @@ void Interface::OnUndock(wxCommandEvent& event) ...@@ -898,7 +935,11 @@ void Interface::OnUndock(wxCommandEvent& event)
fprintf(stderr,"Creating window\n"); fprintf(stderr,"Creating window\n");
extra_frame->Hide(); extra_frame->Hide();
frame_sizer->Hide( extra_frame ); frame_sizer->Hide( extra_frame );
#if (wxCHECK_VERSION(2,5,0))
frame_sizer->Detach( extra_frame ); frame_sizer->Detach( extra_frame );
#else
frame_sizer->Remove( extra_frame );
#endif
frame_sizer->Layout(); frame_sizer->Layout();
frame_sizer->Fit(this); frame_sizer->Fit(this);
extra_window = new ExtraWindow( p_intf, this, extra_frame ); extra_window = new ExtraWindow( p_intf, this, extra_frame );
......
...@@ -464,9 +464,9 @@ OpenDialog::OpenDialog( intf_thread_t *_p_intf, wxWindow *_p_parent, ...@@ -464,9 +464,9 @@ OpenDialog::OpenDialog( intf_thread_t *_p_intf, wxWindow *_p_parent,
/* Create notebook */ /* Create notebook */
notebook = new wxNotebook( panel, Notebook_Event ); notebook = new wxNotebook( panel, Notebook_Event );
//#if (!wxCHECK_VERSION(2,5,0)) #if (!wxCHECK_VERSION(2,5,0))
wxNotebookSizer *notebook_sizer = new wxNotebookSizer( notebook ); wxNotebookSizer *notebook_sizer = new wxNotebookSizer( notebook );
//#endif #endif
notebook->AddPage( FilePanel( notebook ), wxU(_("File")), notebook->AddPage( FilePanel( notebook ), wxU(_("File")),
i_access_method == FILE_ACCESS ); i_access_method == FILE_ACCESS );
...@@ -540,9 +540,9 @@ OpenDialog::OpenDialog( intf_thread_t *_p_intf, wxWindow *_p_parent, ...@@ -540,9 +540,9 @@ OpenDialog::OpenDialog( intf_thread_t *_p_intf, wxWindow *_p_parent,
wxBoxSizer *panel_sizer = new wxBoxSizer( wxVERTICAL ); wxBoxSizer *panel_sizer = new wxBoxSizer( wxVERTICAL );
panel_sizer->Add( mrl_sizer_sizer, 0, wxEXPAND, 5 ); panel_sizer->Add( mrl_sizer_sizer, 0, wxEXPAND, 5 );
panel_sizer->Add( label, 0, wxEXPAND | wxALL, 5 ); panel_sizer->Add( label, 0, wxEXPAND | wxALL, 5 );
//#if (!wxCHECK_VERSION(2,5,0)) #if (!wxCHECK_VERSION(2,5,0))
panel_sizer->Add( notebook_sizer, 1, wxEXPAND | wxALL, 5 ); panel_sizer->Add( notebook_sizer, 1, wxEXPAND | wxALL, 5 );
//#endif #endif
panel_sizer->Add( common_opt_sizer, 0, wxALIGN_LEFT | wxALL, 5 ); panel_sizer->Add( common_opt_sizer, 0, wxALIGN_LEFT | wxALL, 5 );
panel_sizer->Add( static_line, 0, wxEXPAND | wxALL, 5 ); panel_sizer->Add( static_line, 0, wxEXPAND | wxALL, 5 );
panel_sizer->Add( button_sizer, 0, wxALIGN_LEFT | wxALL, 5 ); panel_sizer->Add( button_sizer, 0, wxALIGN_LEFT | wxALL, 5 );
......
...@@ -865,8 +865,7 @@ void Playlist::OnSave( wxCommandEvent& WXUNUSED(event) ) ...@@ -865,8 +865,7 @@ void Playlist::OnSave( wxCommandEvent& WXUNUSED(event) )
char *psz_desc; char *psz_desc;
char *psz_filter; char *psz_filter;
char *psz_module; char *psz_module;
} formats[] = {{ _("M3U file"), "*.m3u", "export-m3u" }, } formats[] = {{ _("M3U file"), "*.m3u", "export-m3u" }};
{ _("PLS file"), "*.pls", "export-pls" }};
wxString filter = wxT(""); wxString filter = wxT("");
......
...@@ -645,10 +645,10 @@ void PrefsTreeCtrl::CleanChanges() ...@@ -645,10 +645,10 @@ void PrefsTreeCtrl::CleanChanges()
if( config_data ) if( config_data )
{ {
config_data->panel->Hide(); config_data->panel->Hide();
#if (wxMAJOR_VERSION >= 2) && (wxMINOR_VERSION < 5 ) #if (wxCHECK_VERSION(2,5,0))
p_sizer->Remove( config_data->panel );
#else
p_sizer->Detach( config_data->panel ); p_sizer->Detach( config_data->panel );
#else
p_sizer->Remove( config_data->panel );
#endif #endif
} }
...@@ -741,10 +741,10 @@ void PrefsTreeCtrl::OnSelectTreeItem( wxTreeEvent& event ) ...@@ -741,10 +741,10 @@ void PrefsTreeCtrl::OnSelectTreeItem( wxTreeEvent& event )
if( config_data && config_data->panel ) if( config_data && config_data->panel )
{ {
config_data->panel->Hide(); config_data->panel->Hide();
#if (wxMAJOR_VERSION >= 2) && (xwMINOR_VERSION < 5 ) #if (wxCHECK_VERSION(2,5,0))
p_sizer->Remove( config_data->panel );
#else
p_sizer->Detach( config_data->panel ); p_sizer->Detach( config_data->panel );
#else
p_sizer->Remove( config_data->panel );
#endif #endif
} }
...@@ -781,11 +781,10 @@ void PrefsTreeCtrl::OnAdvanced( wxCommandEvent& event ) ...@@ -781,11 +781,10 @@ void PrefsTreeCtrl::OnAdvanced( wxCommandEvent& event )
if( config_data ) if( config_data )
{ {
config_data->panel->Hide(); config_data->panel->Hide();
#if (wxCHECK_VERSION(2,5,0))
#if (wxMAJOR_VERSION >= 2) && (xwMINOR_VERSION < 5 )
p_sizer->Remove( config_data->panel );
#else
p_sizer->Detach( config_data->panel ); p_sizer->Detach( config_data->panel );
#else
p_sizer->Remove( config_data->panel );
#endif #endif
} }
......
...@@ -132,7 +132,7 @@ void Timer::Notify() ...@@ -132,7 +132,7 @@ void Timer::Notify()
if( p_intf->p_sys->p_input ) if( p_intf->p_sys->p_input )
{ {
p_main_interface->slider->SetValue( 0 ); p_main_interface->slider->SetValue( 0 );
b_old_seekable = VLC_FALSE; b_slider_shown = VLC_FALSE;
b_disc_shown = VLC_FALSE; b_disc_shown = VLC_FALSE;
char *psz_now_playing = vlc_input_item_GetInfo( char *psz_now_playing = vlc_input_item_GetInfo(
...@@ -163,18 +163,10 @@ void Timer::Notify() ...@@ -163,18 +163,10 @@ void Timer::Notify()
} }
else if( p_intf->p_sys->p_input->b_dead ) else if( p_intf->p_sys->p_input->b_dead )
{ {
/* Hide slider and Disc Buttons */ int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
p_main_interface->disc_frame->Hide();
p_main_interface->slider_sizer->Hide( //controls auto-hide after a timer
p_main_interface->disc_frame ); p_main_interface->m_controls_timer.Start(1000, wxTIMER_ONE_SHOT);
p_main_interface->slider_sizer->Layout();
p_main_interface->slider_sizer->Fit( p_main_interface->slider_frame );
p_main_interface->slider_frame->Hide();
p_main_interface->frame_sizer->Hide(
p_main_interface->slider_frame );
p_main_interface->frame_sizer->Layout();
p_main_interface->frame_sizer->Fit( p_main_interface );
p_main_interface->TogglePlayButton( PAUSE_S ); p_main_interface->TogglePlayButton( PAUSE_S );
i_old_playing_status = PAUSE_S; i_old_playing_status = PAUSE_S;
...@@ -194,6 +186,7 @@ void Timer::Notify() ...@@ -194,6 +186,7 @@ void Timer::Notify()
if( p_intf->p_sys->p_input ) if( p_intf->p_sys->p_input )
{ {
int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
input_thread_t *p_input = p_intf->p_sys->p_input; input_thread_t *p_input = p_intf->p_sys->p_input;
vlc_value_t val; vlc_value_t val;
...@@ -201,6 +194,9 @@ void Timer::Notify() ...@@ -201,6 +194,9 @@ void Timer::Notify()
{ {
vlc_value_t pos; vlc_value_t pos;
//prevent the controls from auto-hiding
p_main_interface->m_controls_timer.Stop();
/* New input or stream map change */ /* New input or stream map change */
p_intf->p_sys->b_playing = 1; p_intf->p_sys->b_playing = 1;
...@@ -222,8 +218,6 @@ void Timer::Notify() ...@@ -222,8 +218,6 @@ void Timer::Notify()
free( psz_now_playing ); free( psz_now_playing );
/* Manage the slider */ /* Manage the slider */
/* FIXME --fenrir */
/* Change the name of b_old_seekable into b_show_bar or something like that */
var_Get( p_input, "position", &pos ); var_Get( p_input, "position", &pos );
var_Change( p_input, "title", VLC_VAR_CHOICESCOUNT, &val, NULL ); var_Change( p_input, "title", VLC_VAR_CHOICESCOUNT, &val, NULL );
...@@ -249,7 +243,6 @@ void Timer::Notify() ...@@ -249,7 +243,6 @@ void Timer::Notify()
p_main_interface->disc_sizer->Layout(); p_main_interface->disc_sizer->Layout();
p_main_interface->disc_sizer->Fit( p_main_interface->disc_sizer->Fit(
p_main_interface->disc_frame ); p_main_interface->disc_frame );
p_main_interface->disc_menu_button->SetToolTip( p_main_interface->disc_menu_button->SetToolTip(
wxU(_( HELP_MENU ) ) ); wxU(_( HELP_MENU ) ) );
p_main_interface->disc_prev_button->SetToolTip( p_main_interface->disc_prev_button->SetToolTip(
...@@ -274,22 +267,42 @@ void Timer::Notify() ...@@ -274,22 +267,42 @@ void Timer::Notify()
p_main_interface->disc_frame ); p_main_interface->disc_frame );
} }
if( ! b_old_seekable )
{
if( pos.f_float > 0.0 ) if( pos.f_float > 0.0 )
{ {
/* Done like this, as it's the only way to know if the */ /* Done like this, as it's the only way to know if the */
/* slider has to be displayed */ /* slider has to be displayed */
b_old_seekable = VLC_TRUE;
if( !b_slider_shown )
{
b_slider_shown = VLC_TRUE;
p_main_interface->slider_frame->Show(); p_main_interface->slider_frame->Show();
p_main_interface->frame_sizer->Show( p_main_interface->frame_sizer->Show(
p_main_interface->slider_frame ); p_main_interface->slider_frame );
p_main_interface->frame_sizer->Layout(); p_main_interface->frame_sizer->Layout();
if (size_to_video)
{
p_main_interface->frame_sizer->Fit( p_main_interface ); p_main_interface->frame_sizer->Fit( p_main_interface );
} }
} }
}
else
{
if( b_slider_shown )
{
p_main_interface->slider_frame->Hide();
p_main_interface->frame_sizer->Hide(
p_main_interface->slider_frame );
p_main_interface->frame_sizer->Layout();
if (size_to_video)
{
p_main_interface->frame_sizer->Fit( p_main_interface );
}
}
}
if( p_intf->p_sys->b_playing && b_old_seekable ) if( p_intf->p_sys->b_playing && b_slider_shown )
{ {
/* Update the slider if the user isn't dragging it. */ /* Update the slider if the user isn't dragging it. */
if( p_intf->p_sys->b_slider_free ) if( p_intf->p_sys->b_slider_free )
...@@ -324,11 +337,11 @@ void Timer::Notify() ...@@ -324,11 +337,11 @@ void Timer::Notify()
} }
#if 0 #if 0
vlc_mutex_lock( &p_input->stream.stream_lock ); vlc_mutex_lock( &p_input->stream.stream_lock );
if( p_intf->p_sys->p_input->stream.b_seekable && !b_old_seekable ) if( p_intf->p_sys->p_input->stream.b_seekable && !b_slider_shown )
{ {
/* Done like this because b_seekable is set slightly after /* Done like this because b_seekable is set slightly after
* the new input object is available. */ * the new input object is available. */
b_old_seekable = VLC_TRUE; b_slider_shown = VLC_TRUE;
p_main_interface->slider_frame->Show(); p_main_interface->slider_frame->Show();
p_main_interface->frame_sizer->Show( p_main_interface->frame_sizer->Show(
p_main_interface->slider_frame ); p_main_interface->slider_frame );
...@@ -413,7 +426,6 @@ void Timer::Notify() ...@@ -413,7 +426,6 @@ void Timer::Notify()
i_old_rate = val.i_int; i_old_rate = val.i_int;
} }
} }
} }
else if( p_intf->p_sys->b_playing && !p_intf->b_die ) else if( p_intf->p_sys->b_playing && !p_intf->b_die )
{ {
...@@ -460,6 +472,7 @@ static int PopupMenuCB( vlc_object_t *p_this, const char *psz_variable, ...@@ -460,6 +472,7 @@ static int PopupMenuCB( vlc_object_t *p_this, const char *psz_variable,
return VLC_SUCCESS; return VLC_SUCCESS;
} }
/***************************************************************************** /*****************************************************************************
* IntfShowCB: callback triggered by the intf-show playlist variable. * IntfShowCB: callback triggered by the intf-show playlist variable.
*****************************************************************************/ *****************************************************************************/
......
...@@ -46,6 +46,7 @@ enum ...@@ -46,6 +46,7 @@ enum
UpdateSize_Event = wxID_HIGHEST + 1, UpdateSize_Event = wxID_HIGHEST + 1,
UpdateHide_Event, UpdateHide_Event,
SetStayOnTop_Event, SetStayOnTop_Event,
ID_HIDE_TIMER
}; };
class VideoWindow: public wxWindow class VideoWindow: public wxWindow
...@@ -69,9 +70,12 @@ private: ...@@ -69,9 +70,12 @@ private:
wxWindow *p_child_window; wxWindow *p_child_window;
void UpdateSize( wxEvent & ); wxTimer m_hide_timer;
void UpdateHide( wxEvent & );
void OnControlEvent( wxCommandEvent & ); void UpdateSize( wxEvent& event );
void UpdateHide( wxEvent& event );
void OnControlEvent( wxCommandEvent& event );
void OnHideTimer( wxTimerEvent& WXUNUSED(event));
DECLARE_EVENT_TABLE(); DECLARE_EVENT_TABLE();
}; };
...@@ -83,6 +87,7 @@ BEGIN_EVENT_TABLE(VideoWindow, wxWindow) ...@@ -83,6 +87,7 @@ BEGIN_EVENT_TABLE(VideoWindow, wxWindow)
EVT_CUSTOM( wxEVT_SIZE, UpdateHide_Event, VideoWindow::UpdateHide ) EVT_CUSTOM( wxEVT_SIZE, UpdateHide_Event, VideoWindow::UpdateHide )
EVT_COMMAND( SetStayOnTop_Event, wxEVT_VLC_VIDEO, EVT_COMMAND( SetStayOnTop_Event, wxEVT_VLC_VIDEO,
VideoWindow::OnControlEvent ) VideoWindow::OnControlEvent )
EVT_TIMER( ID_HIDE_TIMER, VideoWindow::OnHideTimer )
END_EVENT_TABLE() END_EVENT_TABLE()
/***************************************************************************** /*****************************************************************************
...@@ -105,17 +110,49 @@ VideoWindow::VideoWindow( intf_thread_t *_p_intf, wxWindow *_p_parent ): ...@@ -105,17 +110,49 @@ VideoWindow::VideoWindow( intf_thread_t *_p_intf, wxWindow *_p_parent ):
vlc_mutex_init( p_intf, &lock ); vlc_mutex_init( p_intf, &lock );
int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
p_vout = NULL; p_vout = NULL;
m_hide_timer.SetOwner(this, ID_HIDE_TIMER);
p_intf->pf_request_window = ::GetWindow; p_intf->pf_request_window = ::GetWindow;
p_intf->pf_release_window = ::ReleaseWindow; p_intf->pf_release_window = ::ReleaseWindow;
p_intf->pf_control_window = ::ControlWindow; p_intf->pf_control_window = ::ControlWindow;
p_intf->p_sys->p_video_window = this; p_intf->p_sys->p_video_window = this;
p_child_window = new wxWindow( this, -1, wxDefaultPosition, wxSize(0,0) );
wxSize child_size = wxSize(0,0);
if (!size_to_video)
{
//maybe this size should be an option
child_size = wxSize( wxSystemSettings::GetMetric( wxSYS_SCREEN_X ) / 2,
wxSystemSettings::GetMetric( wxSYS_SCREEN_Y ) / 2);
SetSize(child_size);
}
p_child_window = new wxWindow( this, -1, wxDefaultPosition, child_size );
if (!size_to_video)
{
//show the window so we can see the background where the video will be
p_child_window->Show(); p_child_window->Show();
Show(); Show();
b_shown = VLC_TRUE; b_shown = VLC_TRUE;
}
else
{
//othewise the video window is shown when a video starts
//but hide it now, so we can set the background color without it showing
p_child_window->Hide();
Hide();
b_shown = VLC_FALSE;
}
p_child_window->SetBackgroundColour(*wxBLACK);
SetBackgroundColour(*wxBLACK);
p_intf->p_sys->p_video_sizer = new wxBoxSizer( wxHORIZONTAL ); p_intf->p_sys->p_video_sizer = new wxBoxSizer( wxHORIZONTAL );
p_intf->p_sys->p_video_sizer->Add( this, 1, wxEXPAND ); p_intf->p_sys->p_video_sizer->Add( this, 1, wxEXPAND );
...@@ -227,16 +264,27 @@ void VideoWindow::ReleaseWindow( void *p_window ) ...@@ -227,16 +264,27 @@ void VideoWindow::ReleaseWindow( void *p_window )
p_vout = NULL; p_vout = NULL;
int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
if (size_to_video)
{
#if defined(__WXGTK__) || defined(WIN32) #if defined(__WXGTK__) || defined(WIN32)
wxSizeEvent event( wxSize(0, 0), UpdateHide_Event ); wxSizeEvent event( wxSize(0, 0), UpdateHide_Event );
AddPendingEvent( event ); AddPendingEvent( event );
#endif #endif
}
vlc_mutex_unlock( &lock ); vlc_mutex_unlock( &lock );
} }
void VideoWindow::UpdateSize( wxEvent &_event ) void VideoWindow::UpdateSize( wxEvent &_event )
{ {
int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
m_hide_timer.Stop();
if (size_to_video)
{
wxSizeEvent * event = (wxSizeEvent*)(&_event); wxSizeEvent * event = (wxSizeEvent*)(&_event);
if( !b_shown ) if( !b_shown )
{ {
...@@ -250,10 +298,43 @@ void VideoWindow::UpdateSize( wxEvent &_event ) ...@@ -250,10 +298,43 @@ void VideoWindow::UpdateSize( wxEvent &_event )
wxCommandEvent intf_event( wxEVT_INTF, 0 ); wxCommandEvent intf_event( wxEVT_INTF, 0 );
p_parent->AddPendingEvent( intf_event ); p_parent->AddPendingEvent( intf_event );
} }
else
{
//this is a very hackish way to show in case the user switched
//size-to-video off while no video was playing, which would leave
//the window hidden and of 0 size
if( !b_shown )
{
p_intf->p_sys->p_video_sizer->Show( this, TRUE );
SetFocus();
b_shown = VLC_TRUE;
wxSize child_size = wxSize( wxSystemSettings::GetMetric( wxSYS_SCREEN_X ) / 2,
wxSystemSettings::GetMetric( wxSYS_SCREEN_Y ) / 2);
SetSize(child_size);
p_child_window->SetSize(child_size);
Interface * intf = (Interface *)p_parent;
intf->frame_sizer->Layout();
intf->frame_sizer->Fit(intf);
}
}
}
void VideoWindow::UpdateHide( wxEvent &_event ) void VideoWindow::UpdateHide( wxEvent &_event )
{ {
wxSizeEvent * event = (wxSizeEvent*)(&_event); int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
if (size_to_video)
{
m_hide_timer.Start(1000, wxTIMER_ONE_SHOT);
}
}
void VideoWindow::OnHideTimer( wxTimerEvent& WXUNUSED(event))
{
//wxSizeEvent * event = (wxSizeEvent*)(&_event);
if( b_shown ) if( b_shown )
{ {
p_intf->p_sys->p_video_sizer->Show( this, FALSE ); p_intf->p_sys->p_video_sizer->Show( this, FALSE );
...@@ -261,9 +342,10 @@ void VideoWindow::UpdateHide( wxEvent &_event ) ...@@ -261,9 +342,10 @@ void VideoWindow::UpdateHide( wxEvent &_event )
b_shown = VLC_FALSE; b_shown = VLC_FALSE;
SetSize(0,0); SetSize(0,0);
Show(); Hide();
} }
p_intf->p_sys->p_video_sizer->SetMinSize( event->GetSize() ); //ok I cheat here, but is it ever not 0,0?
p_intf->p_sys->p_video_sizer->SetMinSize( wxSize(0,0) );
wxCommandEvent intf_event( wxEVT_INTF, 0 ); wxCommandEvent intf_event( wxEVT_INTF, 0 );
p_parent->AddPendingEvent( intf_event ); p_parent->AddPendingEvent( intf_event );
...@@ -298,13 +380,20 @@ int VideoWindow::ControlWindow( void *p_window, int i_query, va_list args ) ...@@ -298,13 +380,20 @@ int VideoWindow::ControlWindow( void *p_window, int i_query, va_list args )
{ {
case VOUT_SET_ZOOM: case VOUT_SET_ZOOM:
{ {
int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
if (size_to_video)
{
double f_arg = va_arg( args, double ); double f_arg = va_arg( args, double );
/* Update dimensions */ /* Update dimensions */
wxSizeEvent event( wxSize((int)(p_vout->i_window_width * f_arg), wxSizeEvent event( wxSize((int)(p_vout->i_window_width * f_arg),
(int)(p_vout->i_window_height * f_arg)), (int)(p_vout->i_window_height * f_arg)),
UpdateSize_Event ); UpdateSize_Event );
AddPendingEvent( event ); AddPendingEvent( event );
}
i_ret = VLC_SUCCESS; i_ret = VLC_SUCCESS;
} }
......
...@@ -93,6 +93,8 @@ private: ...@@ -93,6 +93,8 @@ private:
#define TASKBAR_LONGTEXT N_("Show taskbar entry") #define TASKBAR_LONGTEXT N_("Show taskbar entry")
#define MINIMAL_TEXT N_("Minimal interface") #define MINIMAL_TEXT N_("Minimal interface")
#define MINIMAL_LONGTEXT N_("Use minimal interface, no toolbar, few menus") #define MINIMAL_LONGTEXT N_("Use minimal interface, no toolbar, few menus")
#define SIZE_TO_VIDEO_TEXT N_("Size to video")
#define SIZE_TO_VIDEO_LONGTEXT N_("Resize VLC to match the video resolution")
#define SYSTRAY_TEXT N_("Show systray icon") #define SYSTRAY_TEXT N_("Show systray icon")
#define SYSTRAY_LONGTEXT N_("Show systray icon") #define SYSTRAY_LONGTEXT N_("Show systray icon")
...@@ -121,6 +123,8 @@ vlc_module_begin(); ...@@ -121,6 +123,8 @@ vlc_module_begin();
TASKBAR_TEXT, TASKBAR_LONGTEXT, VLC_FALSE ); TASKBAR_TEXT, TASKBAR_LONGTEXT, VLC_FALSE );
add_bool( "wxwin-minimal", 0, NULL, add_bool( "wxwin-minimal", 0, NULL,
MINIMAL_TEXT, MINIMAL_LONGTEXT, VLC_TRUE ); MINIMAL_TEXT, MINIMAL_LONGTEXT, VLC_TRUE );
add_bool( "wxwin-size-to-video", 1, NULL,
SIZE_TO_VIDEO_TEXT, SIZE_TO_VIDEO_LONGTEXT, VLC_TRUE );
#ifdef wxHAS_TASK_BAR_ICON #ifdef wxHAS_TASK_BAR_ICON
add_bool( "wxwin-systray", 0, NULL, add_bool( "wxwin-systray", 0, NULL,
SYSTRAY_TEXT, SYSTRAY_LONGTEXT, VLC_FALSE ); SYSTRAY_TEXT, SYSTRAY_LONGTEXT, VLC_FALSE );
......
...@@ -45,12 +45,10 @@ ...@@ -45,12 +45,10 @@
#include <wx/taskbar.h> #include <wx/taskbar.h>
#include "vlc_keys.h" #include "vlc_keys.h"
//PITA
#if (!wxCHECK_VERSION(2,5,0)) #if (!wxCHECK_VERSION(2,5,0))
typedef long wxTreeItemIdValue; typedef long wxTreeItemIdValue;
#endif #endif
DECLARE_LOCAL_EVENT_TYPE( wxEVT_DIALOG, 0 ); DECLARE_LOCAL_EVENT_TYPE( wxEVT_DIALOG, 0 );
DECLARE_LOCAL_EVENT_TYPE( wxEVT_INTF, 1 ); DECLARE_LOCAL_EVENT_TYPE( wxEVT_INTF, 1 );
...@@ -89,6 +87,10 @@ DECLARE_LOCAL_EVENT_TYPE( wxEVT_INTF, 1 ); ...@@ -89,6 +87,10 @@ DECLARE_LOCAL_EVENT_TYPE( wxEVT_INTF, 1 );
#define MODE_AUTHOR 2 #define MODE_AUTHOR 2
#define MODE_TITLE 3 #define MODE_TITLE 3
enum{
ID_CONTROLS_TIMER,
};
class DialogsProvider; class DialogsProvider;
class PrefsTreeCtrl; class PrefsTreeCtrl;
class AutoBuiltPanel; class AutoBuiltPanel;
...@@ -187,7 +189,7 @@ private: ...@@ -187,7 +189,7 @@ private:
vlc_bool_t b_init; vlc_bool_t b_init;
int i_old_playing_status; int i_old_playing_status;
int i_old_rate; int i_old_rate;
vlc_bool_t b_old_seekable; vlc_bool_t b_slider_shown;
vlc_bool_t b_disc_shown; vlc_bool_t b_disc_shown;
}; };
...@@ -353,6 +355,8 @@ public: ...@@ -353,6 +355,8 @@ public:
Systray *p_systray; Systray *p_systray;
#endif #endif
wxTimer m_controls_timer;
private: private:
void SetupHotkeys(); void SetupHotkeys();
void CreateOurMenuBar(); void CreateOurMenuBar();
...@@ -362,6 +366,8 @@ private: ...@@ -362,6 +366,8 @@ private:
void Open( int i_access_method ); void Open( int i_access_method );
/* Event handlers (these functions should _not_ be virtual) */ /* Event handlers (these functions should _not_ be virtual) */
void OnControlsTimer(wxTimerEvent& WXUNUSED(event));
void OnExit( wxCommandEvent& event ); void OnExit( wxCommandEvent& event );
void OnAbout( wxCommandEvent& event ); void OnAbout( wxCommandEvent& event );
......
...@@ -65,12 +65,20 @@ int Export_M3U( vlc_object_t *p_this ) ...@@ -65,12 +65,20 @@ int Export_M3U( vlc_object_t *p_this )
{ {
char *psz_author = char *psz_author =
vlc_input_item_GetInfo( &p_playlist->pp_items[i]->input, vlc_input_item_GetInfo( &p_playlist->pp_items[i]->input,
_("General"), _("Author") ); _("Meta-information"), _("Artist") );
if( psz_author && *psz_author )
fprintf( p_export->p_file, "#EXTINF:%i,%s,%s\n", {
fprintf( p_export->p_file, "#EXTINF:%i,%s - %s\n",
(int)(p_playlist->pp_items[i]->input.i_duration/1000000), (int)(p_playlist->pp_items[i]->input.i_duration/1000000),
psz_author ? psz_author : "", psz_author, p_playlist->pp_items[i]->input.psz_name );
p_playlist->pp_items[i]->input.psz_name ); }
else
{
fprintf( p_export->p_file, "#EXTINF:%i,%s\n",
(int)(p_playlist->pp_items[i]->input.i_duration/1000000),
p_playlist->pp_items[i]->input.psz_name );
}
free(psz_author);
} }
/* VLC specific options */ /* VLC specific options */
......
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