Commit 3355ba5c authored by Jean-Paul Saman's avatar Jean-Paul Saman

Functionality of Familiar Linux Gtk+ interface is finished. Only testing on...

Functionality of Familiar Linux Gtk+ interface is finished. Only testing on iPaqwith libgpewidget0  still needs to be done.
parent 019f1d06
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* callbacks.c : Callbacks for the Familiar Linux Gtk+ plugin. * callbacks.c : Callbacks for the Familiar Linux Gtk+ plugin.
***************************************************************************** *****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN * Copyright (C) 2000, 2001 VideoLAN
* $Id: callbacks.c,v 1.16 2002/12/16 22:06:59 jpsaman Exp $ * $Id: callbacks.c,v 1.17 2002/12/17 21:04:49 jpsaman Exp $
* *
* Authors: Jean-Paul Saman <jpsaman@wxs.nl> * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
* *
...@@ -48,8 +48,6 @@ ...@@ -48,8 +48,6 @@
#include "support.h" #include "support.h"
#include "familiar.h" #include "familiar.h"
/*#include "netutils.h"*/
static void MediaURLOpenChanged( GtkWidget *widget, gchar *psz_url ); static void MediaURLOpenChanged( GtkWidget *widget, gchar *psz_url );
static char* get_file_perm(const char *path); static char* get_file_perm(const char *path);
...@@ -288,7 +286,6 @@ on_toolbar_rewind_clicked (GtkButton *button, ...@@ -288,7 +286,6 @@ on_toolbar_rewind_clicked (GtkButton *button,
{ {
input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_SLOWER ); input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_SLOWER );
} }
else msg_Err(p_intf, "p_intf->p_sys->p_input is NULL" );
} }
...@@ -302,7 +299,6 @@ on_toolbar_pause_clicked (GtkButton *button, ...@@ -302,7 +299,6 @@ on_toolbar_pause_clicked (GtkButton *button,
{ {
input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_PAUSE ); input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_PAUSE );
} }
else msg_Err(p_intf, "p_intf->p_sys->p_input is NULL" );
} }
...@@ -364,7 +360,6 @@ on_toolbar_forward_clicked (GtkButton *button, ...@@ -364,7 +360,6 @@ on_toolbar_forward_clicked (GtkButton *button,
{ {
input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_FASTER ); input_SetStatus( p_intf->p_sys->p_input, INPUT_STATUS_FASTER );
} }
else msg_Err(p_intf, "p_intf->p_sys->p_input is NULL" );
} }
...@@ -388,7 +383,9 @@ void ...@@ -388,7 +383,9 @@ void
on_comboURL_entry_changed (GtkEditable *editable, on_comboURL_entry_changed (GtkEditable *editable,
gpointer user_data) gpointer user_data)
{ {
// intf_thread_t * p_intf = GtkGetIntf( GTK_WIDGET(editable) ); #if 0
intf_thread_t * p_intf = GtkGetIntf( GTK_WIDGET(editable) );
#endif
gchar * psz_url; gchar * psz_url;
struct stat st; struct stat st;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* familiar.c : familiar plugin for vlc * familiar.c : familiar plugin for vlc
***************************************************************************** *****************************************************************************
* Copyright (C) 2002 VideoLAN * Copyright (C) 2002 VideoLAN
* $Id: familiar.c,v 1.16 2002/12/16 21:48:17 jpsaman Exp $ * $Id: familiar.c,v 1.17 2002/12/17 21:04:49 jpsaman Exp $
* *
* Authors: Jean-Paul Saman <jpsaman@wxs.nl> * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
* *
...@@ -48,10 +48,10 @@ ...@@ -48,10 +48,10 @@
*****************************************************************************/ *****************************************************************************/
static int Open ( vlc_object_t * ); 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 * );
void GtkAutoPlayFile( vlc_object_t * ); void GtkAutoPlayFile ( vlc_object_t * );
static int Manage ( intf_thread_t *p_intf );
/***************************************************************************** /*****************************************************************************
* Module descriptor * Module descriptor
...@@ -86,14 +86,14 @@ static int Open( vlc_object_t *p_this ) ...@@ -86,14 +86,14 @@ static int Open( vlc_object_t *p_this )
return VLC_ENOMEM; return VLC_ENOMEM;
} }
//#ifdef NEED_GTK_MAIN #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_ENOMOD; return VLC_ENOMOD;
} }
//#endif #endif
/* Initialize Gtk+ thread */ /* Initialize Gtk+ thread */
p_intf->p_sys->p_input = NULL; p_intf->p_sys->p_input = NULL;
...@@ -116,9 +116,9 @@ static void Close( vlc_object_t *p_this ) ...@@ -116,9 +116,9 @@ static void Close( vlc_object_t *p_this )
vlc_object_release( p_intf->p_sys->p_input ); vlc_object_release( p_intf->p_sys->p_input );
} }
//#ifdef NEED_GTK_MAIN #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 #endif
/* Destroy structure */ /* Destroy structure */
free( p_intf->p_sys ); free( p_intf->p_sys );
...@@ -132,33 +132,30 @@ static void Close( vlc_object_t *p_this ) ...@@ -132,33 +132,30 @@ static void Close( vlc_object_t *p_this )
*****************************************************************************/ *****************************************************************************/
static void Run( intf_thread_t *p_intf ) static void Run( intf_thread_t *p_intf )
{ {
#ifdef HAVE_GPE_INIT_H #ifndef NEED_GTK_MAIN
/* gtk_init needs to know the command line. We don't care, so we
* give it an empty one */
char *p_args[] = { "" }; char *p_args[] = { "" };
char **pp_args = p_args; char **pp_args = p_args;
int i_args = 1; int i_args = 1;
int i_dummy;
#endif
#ifdef HAVE_GPE_INIT_H
/* Initialize GPE interface */ /* Initialize GPE interface */
if (gpe_application_init(&i_args, &pp_args) == FALSE) if (gpe_application_init(&i_args, &pp_args) == FALSE)
exit (1); exit (1);
#else #else
# ifdef NEED_GTK_MAIN
/* Initialize Gtk+ */
gtk_set_locale ();
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_set_locale (); gtk_set_locale ();
#ifndef NEED_GTK_MAIN
gtk_init( &i_args, &pp_args ); gtk_init( &i_args, &pp_args );
# endif #else
/* Initialize Gtk+ */
gdk_threads_enter();
#endif
#endif #endif
/* Create some useful widgets that will certainly be used */
/* Create some useful widgets that will certainly be used */
// FIXME: magic path // FIXME: magic path
add_pixmap_directory("share"); add_pixmap_directory("share");
add_pixmap_directory("/usr/share/vlc"); add_pixmap_directory("/usr/share/vlc");
...@@ -175,7 +172,6 @@ static void Run( intf_thread_t *p_intf ) ...@@ -175,7 +172,6 @@ static void Run( intf_thread_t *p_intf )
p_intf->p_sys->p_notebook = GTK_NOTEBOOK( gtk_object_get_data( p_intf->p_sys->p_notebook = GTK_NOTEBOOK( gtk_object_get_data(
GTK_OBJECT( p_intf->p_sys->p_window ), "notebook" ) ); GTK_OBJECT( p_intf->p_sys->p_window ), "notebook" ) );
// gtk_widget_hide( GTK_WIDGET(p_intf->p_sys->p_notebook) );
p_intf->p_sys->p_progess = GTK_PROGRESS_BAR( gtk_object_get_data( p_intf->p_sys->p_progess = GTK_PROGRESS_BAR( gtk_object_get_data(
GTK_OBJECT( p_intf->p_sys->p_window ), "progress" ) ); GTK_OBJECT( p_intf->p_sys->p_window ), "progress" ) );
...@@ -195,24 +191,35 @@ static void Run( intf_thread_t *p_intf ) ...@@ -195,24 +191,35 @@ static void Run( intf_thread_t *p_intf )
gtk_widget_show( p_intf->p_sys->p_window ); gtk_widget_show( p_intf->p_sys->p_window );
ReadDirectory(p_intf->p_sys->p_clist, "/mnt"); ReadDirectory(p_intf->p_sys->p_clist, "/mnt");
//#ifdef NEED_GTK_MAIN #ifdef NEED_GTK_MAIN
/* Sleep to avoid using all CPU - since some interfaces need to
* access keyboard events, a 100ms delay is a good compromise */
while( !p_intf->b_die ) while( !p_intf->b_die )
{ {
Manage( p_intf );
/* Sleep to avoid using all CPU - since some interfaces need to
* access keyboard events, a 100ms delay is a good compromise */
gdk_threads_leave(); gdk_threads_leave();
msleep( INTF_IDLE_SLEEP ); msleep( INTF_IDLE_SLEEP );
gdk_threads_enter(); gdk_threads_enter();
} }
//#endif #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
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 #ifdef NEED_GTK_MAIN
gdk_threads_leave(); gdk_threads_leave();
//#else //#else
gtk_main_quit(); // gtk_main_quit();
//#endif #endif
} }
/***************************************************************************** /*****************************************************************************
...@@ -255,3 +262,43 @@ void GtkAutoPlayFile( vlc_object_t *p_this ) ...@@ -255,3 +262,43 @@ void GtkAutoPlayFile( vlc_object_t *p_this )
vlc_list_release( &list ); vlc_list_release( &list );
} }
/* following functions are local */
/*****************************************************************************
* Manage: manage main thread messages
*****************************************************************************
* In this function, called approx. 10 times a second, we check what the
* main program wanted to tell us.
*****************************************************************************/
static int Manage( intf_thread_t *p_intf )
{
vlc_mutex_lock( &p_intf->change_lock );
/* Update the input */
if( p_intf->p_sys->p_input == NULL )
{
p_intf->p_sys->p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT,
FIND_ANYWHERE );
}
else if( p_intf->p_sys->p_input->b_dead )
{
vlc_object_release( p_intf->p_sys->p_input );
p_intf->p_sys->p_input = NULL;
}
#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 );
return TRUE;
}
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