* familiar.c : familiar plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: familiar.c,v 1.8.2.1 2002/09/30 20:37:13 jpsaman Exp $
+ * $Id: familiar.c,v 1.8.2.2 2002/09/30 22:01:43 jpsaman Exp $
*
* Authors: Jean-Paul Saman <jpsaman@wxs.nl>
*
#include "familiar_support.h"
#include "familiar.h"
+/*****************************************************************************
+ * Local variables (mutex-protected).
+ *****************************************************************************/
+static void ** pp_global_data = NULL;
+
/*****************************************************************************
* g_atexit: kludge to avoid the Gtk+ thread to segfault at exit
*****************************************************************************
intf_thread_t *p_intf = p_main->p_intf;
int i_dummy;
+ if( pp_global_data == NULL )
+ {
+ atexit( func );
+ return;
+ }
+
+ p_intf = (intf_thread_t *)*pp_global_data;
+ if( p_intf == NULL )
+ {
+ return;
+ }
+
for( i_dummy = 0;
i_dummy < MAX_ATEXIT && p_intf->p_sys->pf_callback[i_dummy] != NULL;
i_dummy++ )
<use_widget_names>True</use_widget_names>
<output_main_file>False</output_main_file>
<output_build_files>False</output_build_files>
+ <main_source_file>familiar_interface.c</main_source_file>
+ <main_header_file>familiar_interface.h</main_header_file>
+ <handler_source_file>familiar_callbacks.c</handler_source_file>
+ <handler_header_file>familiar_callbacks.h</handler_header_file>
+ <support_source_file>familiar_support.c</support_source_file>
+ <support_header_file>familiar_support.h</support_header_file>
</project>
<widget>
* callbacks.c : Callbacks for the Familiar Linux Gtk+ plugin.
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
- * $Id: familiar_callbacks.c,v 1.6.2.1 2002/09/30 20:37:13 jpsaman Exp $
+ * $Id: familiar_callbacks.c,v 1.6.2.2 2002/09/30 22:01:43 jpsaman Exp $
*
* Authors: Jean-Paul Saman <jpsaman@wxs.nl>
*
{
// intf_thread_t *p_intf = GtkGetIntf( clist );
struct dirent **namelist;
- int n,i;
+ int n=-1;
+ int status=-1;
intf_ErrMsg( "@@@ ReadDirectory - Enter" );
g_print( "%s\n",psz_dir );
if (psz_dir)
- chdir(psz_dir);
- n = scandir(".", &namelist, 0, NULL);
+ {
+ status = chdir(psz_dir);
+ }
+ if (status<0)
+ intf_ErrMsg("File is not a directory.");
+ else
+ n = scandir(".", &namelist, 0, NULL);
if (n<0)
perror("scandir");
else
{
gchar *ppsz_text[2];
+ int i;
gtk_clist_freeze( clist );
gtk_clist_clear( clist );
-
g_print( "dir entries: %d\n",n );
for (i=0; i<n; i++)
{
gtk_widget_show( GTK_WIDGET(p_intf->p_sys->p_notebook) );
gdk_window_raise( p_intf->p_sys->p_window->window );
if (p_intf->p_sys->p_clist)
+ {
ReadDirectory(p_intf->p_sys->p_clist, ".");
+ }
}
gint ret;
struct stat st;
+ if (clist == NULL)
+ intf_ErrMsg("clist is unusable.");
+
ret = gtk_clist_get_text (clist, row, 0, text);
if (ret)
{
if (lstat((char*)text[0], &st)==0)
{
if (S_ISDIR(st.st_mode))
+ {
+ g_print( "read dir %s\n", text[0] );
ReadDirectory(clist, text[0]);
+ }
else
MediaURLOpenChanged(GTK_WIDGET(clist), text[0]);
}
gpointer user_data)
{
GtkExit( GTK_WIDGET( widget ), user_data );
+ exit (0); //dirty
return TRUE;
}
* callbacks.h : familiar plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: familiar_callbacks.h,v 1.7.2.1 2002/09/30 20:37:13 jpsaman Exp $
+ * $Id: familiar_callbacks.h,v 1.7.2.2 2002/09/30 22:01:43 jpsaman Exp $
*
* Authors: Jean-Paul Saman <jpsaman@wxs.nl>
*
on_familiar_delete_event (GtkWidget *widget,
GdkEvent *event,
gpointer user_data);
+
+