Commit 80b15699 authored by Gildas Bazin's avatar Gildas Bazin

* src/misc/threads.c, src/misc/win32_specific.c, include/interface.h: fixed typos.
* configure.ac.in, modules/gui/gtk/gtk.c: Added a NEED_GTK_MAIN macro to the compiler
   flags for the gtk module. When this macro isn't defined, then the gtk module
   doesn't make use of the gtk_main module. I had to do this change because the
   gtk_main trick can't work on win32 and render the whole gtk interface unusable.
parent d8ea3394
...@@ -1724,7 +1724,9 @@ then ...@@ -1724,7 +1724,9 @@ then
if test "x${ac_cv_gtk_headers}" = "xyes" if test "x${ac_cv_gtk_headers}" = "xyes"
then then
PLUGINS="${PLUGINS} gtk" PLUGINS="${PLUGINS} gtk"
NEED_GTK_MAIN=yes if test "x${SYS}" != "xmingw32"; then
NEED_GTK_MAIN=yes
fi
ALIASES="${ALIASES} gvlc" ALIASES="${ALIASES} gvlc"
fi fi
CPPFLAGS="${CPPFLAGS_save}" CPPFLAGS="${CPPFLAGS_save}"
...@@ -2095,6 +2097,7 @@ dnl ...@@ -2095,6 +2097,7 @@ dnl
if test "x${NEED_GTK_MAIN}" != "xno" if test "x${NEED_GTK_MAIN}" != "xno"
then then
PLUGINS="${PLUGINS} gtk_main" PLUGINS="${PLUGINS} gtk_main"
CFLAGS_gtk = "${CFLAGS_gtk} -DNEED_GTK_MAIN"
CFLAGS_gtk_main="${CFLAGS_gtk_main} ${CFLAGS_gtk} ${CFLAGS_familiar}" CFLAGS_gtk_main="${CFLAGS_gtk_main} ${CFLAGS_gtk} ${CFLAGS_familiar}"
LDFLAGS_gtk_main="${LDFLAGS_gtk_main} ${LDFLAGS_gtk} ${LDFLAGS_familiar}" LDFLAGS_gtk_main="${LDFLAGS_gtk_main} ${LDFLAGS_gtk} ${LDFLAGS_familiar}"
fi fi
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* interface, such as message output. * interface, such as message output.
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: interface.h,v 1.34 2002/10/03 17:01:59 gbazin Exp $ * $Id: interface.h,v 1.35 2002/10/04 12:01:40 gbazin Exp $
* *
* Authors: Vincent Seguin <seguin@via.ecp.fr> * Authors: Vincent Seguin <seguin@via.ecp.fr>
* *
...@@ -64,15 +64,15 @@ VLC_EXPORT( void, intf_Destroy, ( intf_thread_t * ) ); ...@@ -64,15 +64,15 @@ VLC_EXPORT( void, intf_Destroy, ( intf_thread_t * ) );
*****************************************************************************/ *****************************************************************************/
#ifdef WIN32 #ifdef WIN32
# define CONSOLE_INTRO_MSG \ # define CONSOLE_INTRO_MSG \
AllocConsole(); \ AllocConsole(); \
freopen( "CONOUT$", "w", stdout ); \ freopen( "CONOUT$", "w", stdout ); \
freopen( "CONOUT$", "w", stderr ); \ freopen( "CONOUT$", "w", stderr ); \
freopen( "CONIN$", "r", stdin ); \ freopen( "CONIN$", "r", stdin ); \
intf_Msg( VERSION_MESSAGE ); \ msg_Info( p_intf, VERSION_MESSAGE ); \
intf_Msg( _("\nWarning: if you can't access the GUI anymore, "\ msg_Info( p_intf, _("\nWarning: if you can't access the GUI " \
"open a dos command box, go to the directory " \ "anymore, open a dos command box, go to the " \
"where you installed VLC and run " \ "directory where you installed VLC and run " \
"\"vlc -I win32\"\n") ) "\"vlc -I win32\"\n") )
#else #else
# define CONSOLE_INTRO_MSG # define CONSOLE_INTRO_MSG
#endif #endif
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* gtk.c : Gtk+ plugin for vlc * gtk.c : Gtk+ plugin for vlc
***************************************************************************** *****************************************************************************
* Copyright (C) 2000-2001 VideoLAN * Copyright (C) 2000-2001 VideoLAN
* $Id: gtk.c,v 1.3 2002/09/30 11:05:39 sam Exp $ * $Id: gtk.c,v 1.4 2002/10/04 12:01:40 gbazin Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* *
...@@ -49,7 +49,7 @@ static int Open ( vlc_object_t * ); ...@@ -49,7 +49,7 @@ static int Open ( vlc_object_t * );
static void Close ( vlc_object_t * ); static void Close ( vlc_object_t * );
static void Run ( intf_thread_t * ); static void Run ( intf_thread_t * );
static void Manage ( intf_thread_t * ); static int Manage ( intf_thread_t * );
/***************************************************************************** /*****************************************************************************
* Module descriptor * Module descriptor
...@@ -95,12 +95,14 @@ static int Open( vlc_object_t *p_this ) ...@@ -95,12 +95,14 @@ static int Open( vlc_object_t *p_this )
return VLC_ENOMEM; return VLC_ENOMEM;
} }
#ifdef NEED_GTK_MAIN
p_intf->p_sys->p_gtk_main = module_Need( p_this, "gtk_main", "gtk" ); p_intf->p_sys->p_gtk_main = module_Need( p_this, "gtk_main", "gtk" );
if( p_intf->p_sys->p_gtk_main == NULL ) if( p_intf->p_sys->p_gtk_main == NULL )
{ {
free( p_intf->p_sys ); free( p_intf->p_sys );
return VLC_EMODULE; return VLC_EMODULE;
} }
#endif
p_intf->pf_run = Run; p_intf->pf_run = Run;
...@@ -135,7 +137,9 @@ static void Close( vlc_object_t *p_this ) ...@@ -135,7 +137,9 @@ static void Close( vlc_object_t *p_this )
msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub ); msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );
#ifdef NEED_GTK_MAIN
module_Unneed( p_intf, p_intf->p_sys->p_gtk_main ); module_Unneed( p_intf, p_intf->p_sys->p_gtk_main );
#endif
/* Destroy structure */ /* Destroy structure */
free( p_intf->p_sys ); free( p_intf->p_sys );
...@@ -157,7 +161,22 @@ static void Run( intf_thread_t *p_intf ) ...@@ -157,7 +161,22 @@ static void Run( intf_thread_t *p_intf )
{ "text/plain", 0, DROP_ACCEPT_TEXT_PLAIN } { "text/plain", 0, DROP_ACCEPT_TEXT_PLAIN }
}; };
#ifdef NEED_GTK_MAIN
gdk_threads_enter(); gdk_threads_enter();
#else
/* gtk_init needs to know the command line. We don't care, so we
* give it an empty one */
char *p_args[] = { "" };
char **pp_args = p_args;
int i_args = 1;
int i_dummy;
/* gtk_init will register stuff with g_atexit, so we need to take
* the global lock if we want to be able to intercept the calls */
vlc_mutex_lock( &p_intf->p_libvlc->global_lock );
gtk_init( &i_args, &pp_args );
vlc_mutex_unlock( &p_intf->p_libvlc->global_lock );
#endif
/* Create some useful widgets that will certainly be used */ /* Create some useful widgets that will certainly be used */
p_intf->p_sys->p_window = create_intf_window(); p_intf->p_sys->p_window = create_intf_window();
...@@ -239,6 +258,7 @@ static void Run( intf_thread_t *p_intf ) ...@@ -239,6 +258,7 @@ static void Run( intf_thread_t *p_intf )
/* Show the control window */ /* Show the control window */
gtk_widget_show( p_intf->p_sys->p_window ); gtk_widget_show( p_intf->p_sys->p_window );
#ifdef NEED_GTK_MAIN
while( !p_intf->b_die ) while( !p_intf->b_die )
{ {
Manage( p_intf ); Manage( p_intf );
...@@ -249,6 +269,16 @@ static void Run( intf_thread_t *p_intf ) ...@@ -249,6 +269,16 @@ static void Run( intf_thread_t *p_intf )
msleep( INTF_IDLE_SLEEP ); msleep( INTF_IDLE_SLEEP );
gdk_threads_enter(); gdk_threads_enter();
} }
#else
/* Sleep to avoid using all CPU - since some interfaces needs to access
* keyboard events, a 100ms delay is a good compromise */
i_dummy = gtk_timeout_add( INTF_IDLE_SLEEP / 1000, (GtkFunction)Manage,
p_intf );
/* Enter Gtk mode */
gtk_main();
/* Remove the timeout */
gtk_timeout_remove( i_dummy );
#endif
/* Destroy the Tooltips structure */ /* Destroy the Tooltips structure */
gtk_object_destroy( GTK_OBJECT(p_intf->p_sys->p_tooltips) ); gtk_object_destroy( GTK_OBJECT(p_intf->p_sys->p_tooltips) );
...@@ -257,7 +287,9 @@ static void Run( intf_thread_t *p_intf ) ...@@ -257,7 +287,9 @@ static void Run( intf_thread_t *p_intf )
gtk_object_destroy( GTK_OBJECT(p_intf->p_sys->p_popup) ); gtk_object_destroy( GTK_OBJECT(p_intf->p_sys->p_popup) );
gtk_object_destroy( GTK_OBJECT(p_intf->p_sys->p_window) ); gtk_object_destroy( GTK_OBJECT(p_intf->p_sys->p_window) );
#ifdef NEED_GTK_MAIN
gdk_threads_leave(); gdk_threads_leave();
#endif
} }
/* following functions are local */ /* following functions are local */
...@@ -268,7 +300,7 @@ static void Run( intf_thread_t *p_intf ) ...@@ -268,7 +300,7 @@ static void Run( intf_thread_t *p_intf )
* In this function, called approx. 10 times a second, we check what the * In this function, called approx. 10 times a second, we check what the
* main program wanted to tell us. * main program wanted to tell us.
*****************************************************************************/ *****************************************************************************/
static void Manage( intf_thread_t *p_intf ) static int Manage( intf_thread_t *p_intf )
{ {
int i_start, i_stop; int i_start, i_stop;
...@@ -414,5 +446,19 @@ static void Manage( intf_thread_t *p_intf ) ...@@ -414,5 +446,19 @@ static void Manage( intf_thread_t *p_intf )
p_intf->p_sys->b_playing = 0; p_intf->p_sys->b_playing = 0;
} }
#ifndef NEED_GTK_MAIN
if( p_intf->b_die )
{
vlc_mutex_unlock( &p_intf->change_lock );
/* Prepare to die, young Skywalker */
gtk_main_quit();
return FALSE;
}
#endif
vlc_mutex_unlock( &p_intf->change_lock ); vlc_mutex_unlock( &p_intf->change_lock );
return TRUE;
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* threads.c : threads implementation for the VideoLAN client * threads.c : threads implementation for the VideoLAN client
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000, 2001, 2002 VideoLAN * Copyright (C) 1999, 2000, 2001, 2002 VideoLAN
* $Id: threads.c,v 1.19 2002/10/03 17:01:58 gbazin Exp $ * $Id: threads.c,v 1.20 2002/10/04 12:01:40 gbazin Exp $
* *
* Authors: Jean-Marc Dressler <polux@via.ecp.fr> * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org> * Samuel Hocevar <sam@zoy.org>
...@@ -245,7 +245,8 @@ int __vlc_mutex_init( vlc_object_t *p_this, vlc_mutex_t *p_mutex ) ...@@ -245,7 +245,8 @@ int __vlc_mutex_init( vlc_object_t *p_this, vlc_mutex_t *p_mutex )
* function and have a 100% correct vlc_cond_wait() implementation. * function and have a 100% correct vlc_cond_wait() implementation.
* As this function is not available on Win9x, we can use the faster * As this function is not available on Win9x, we can use the faster
* CriticalSections */ * CriticalSections */
if( p_this->p_vlc->SignalObjectAndWait && !p_this->p_vlc->b_fast_mutex ) if( p_this->p_libvlc->SignalObjectAndWait &&
!p_this->p_libvlc->b_fast_mutex )
{ {
/* We are running on NT/2K/XP, we can use SignalObjectAndWait */ /* We are running on NT/2K/XP, we can use SignalObjectAndWait */
p_mutex->mutex = CreateMutex( 0, FALSE, 0 ); p_mutex->mutex = CreateMutex( 0, FALSE, 0 );
...@@ -378,10 +379,10 @@ int __vlc_cond_init( vlc_object_t *p_this, vlc_cond_t *p_condvar ) ...@@ -378,10 +379,10 @@ int __vlc_cond_init( vlc_object_t *p_this, vlc_cond_t *p_condvar )
p_condvar->i_waiting_threads = 0; p_condvar->i_waiting_threads = 0;
/* Misc init */ /* Misc init */
p_condvar->i_win9x_cv = p_this->p_vlc->i_win9x_cv; p_condvar->i_win9x_cv = p_this->p_libvlc->i_win9x_cv;
p_condvar->SignalObjectAndWait = p_this->p_vlc->SignalObjectAndWait; p_condvar->SignalObjectAndWait = p_this->p_libvlc->SignalObjectAndWait;
if( (p_condvar->SignalObjectAndWait && !p_this->p_vlc->b_fast_mutex) if( (p_condvar->SignalObjectAndWait && !p_this->p_libvlc->b_fast_mutex)
|| p_condvar->i_win9x_cv == 0 ) || p_condvar->i_win9x_cv == 0 )
{ {
/* Create an auto-reset event. */ /* Create an auto-reset event. */
...@@ -400,7 +401,7 @@ int __vlc_cond_init( vlc_object_t *p_this, vlc_cond_t *p_condvar ) ...@@ -400,7 +401,7 @@ int __vlc_cond_init( vlc_object_t *p_this, vlc_cond_t *p_condvar )
0x7fffffff, /* max count */ 0x7fffffff, /* max count */
NULL ); /* unnamed */ NULL ); /* unnamed */
if( p_this->p_vlc->i_win9x_cv == 1 ) if( p_condvar->i_win9x_cv == 1 )
/* Create a manual-reset event initially signaled. */ /* Create a manual-reset event initially signaled. */
p_condvar->event = CreateEvent( NULL, TRUE, TRUE, NULL ); p_condvar->event = CreateEvent( NULL, TRUE, TRUE, NULL );
else else
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* win32_specific.c: Win32 specific features * win32_specific.c: Win32 specific features
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: win32_specific.c,v 1.15 2002/09/17 14:56:13 sam Exp $ * $Id: win32_specific.c,v 1.16 2002/10/04 12:01:40 gbazin Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* Gildas Bazin <gbazin@netcourrier.com> * Gildas Bazin <gbazin@netcourrier.com>
...@@ -55,8 +55,8 @@ void system_Init( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] ) ...@@ -55,8 +55,8 @@ void system_Init( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
*****************************************************************************/ *****************************************************************************/
void system_Configure( vlc_t *p_this ) void system_Configure( vlc_t *p_this )
{ {
p_this->p_vlc->b_fast_mutex = config_GetInt( p_this, "fast-mutex" ); p_this->p_libvlc->b_fast_mutex = config_GetInt( p_this, "fast-mutex" );
p_this->p_vlc->i_win9x_cv = config_GetInt( p_this, "win9x-cv-method" ); p_this->p_libvlc->i_win9x_cv = config_GetInt( p_this, "win9x-cv-method" );
} }
/***************************************************************************** /*****************************************************************************
......
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