Commit 88aa406b authored by Cyril Deguet's avatar Cyril Deguet

* a few segfaults but wxwindows works under linux !

parent a64cdbee
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* gtk2_run.cpp: * gtk2_run.cpp:
***************************************************************************** *****************************************************************************
* Copyright (C) 2003 VideoLAN * Copyright (C) 2003 VideoLAN
* $Id: gtk2_run.cpp,v 1.12 2003/04/17 13:08:02 karibu Exp $ * $Id: gtk2_run.cpp,v 1.13 2003/04/20 22:52:50 asmax Exp $
* *
* Authors: Cyril Deguet <asmax@videolan.org> * Authors: Cyril Deguet <asmax@videolan.org>
* *
...@@ -27,6 +27,10 @@ ...@@ -27,6 +27,10 @@
//--- GTK2 ------------------------------------------------------------------ //--- GTK2 ------------------------------------------------------------------
#include <glib.h> #include <glib.h>
#include <gdk/gdk.h> #include <gdk/gdk.h>
#include <gtk/gtk.h>
//--- WWWINDOWS -------------------------------------------------------------
#include <wx/wx.h>
//--- VLC ------------------------------------------------------------------- //--- VLC -------------------------------------------------------------------
#include <vlc/intf.h> #include <vlc/intf.h>
...@@ -42,7 +46,10 @@ ...@@ -42,7 +46,10 @@
#include "../os_theme.h" #include "../os_theme.h"
#include "../src/skin_common.h" #include "../src/skin_common.h"
#include "../src/vlcproc.h" #include "../src/vlcproc.h"
#include "../src/wxdialogs.h"
// include the icon graphic
#include "share/vlc32x32.xpm"
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
class CallBackObjects class CallBackObjects
...@@ -59,17 +66,23 @@ bool IsVLCEvent( unsigned int msg ); ...@@ -59,17 +66,23 @@ bool IsVLCEvent( unsigned int msg );
int SkinManage( intf_thread_t *p_intf ); int SkinManage( intf_thread_t *p_intf );
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// REFRESH TIMER CALLBACK // Local classes declarations.
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
gboolean RefreshTimer( gpointer data ) class Instance: public wxApp
{ {
intf_thread_t *p_intf = (intf_thread_t *)data; public:
SkinManage( p_intf ); Instance();
return true; Instance( intf_thread_t *_p_intf, CallBackObjects *callback );
}
//--------------------------------------------------------------------------- bool OnInit();
OpenDialog *open;
private:
intf_thread_t *p_intf;
CallBackObjects *callbackobj;
};
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
// GTK2 interface // GTK2 interface
...@@ -187,6 +200,49 @@ void GTK2Proc( GdkEvent *event, gpointer data ) ...@@ -187,6 +200,49 @@ void GTK2Proc( GdkEvent *event, gpointer data )
// If hwnd does not match any window or message not processed // If hwnd does not match any window or message not processed
return DefWindowProc( hwnd, uMsg, wParam, lParam ); return DefWindowProc( hwnd, uMsg, wParam, lParam );
#endif #endif
gtk_main_do_event( event );
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Implementation of Instance class
//---------------------------------------------------------------------------
Instance::Instance( )
{
}
Instance::Instance( intf_thread_t *_p_intf, CallBackObjects *callback )
{
// Initialization
p_intf = _p_intf;
callbackobj = callback;
}
IMPLEMENT_APP_NO_MAIN(Instance)
bool Instance::OnInit()
{
// Set event callback. Yes, it's a big hack ;)
gdk_event_handler_set( GTK2Proc, (gpointer)callbackobj, NULL );
p_intf->p_sys->p_icon = new wxIcon( vlc_xpm );
p_intf->p_sys->OpenDlg = new OpenDialog( p_intf, NULL, FILE_ACCESS );
p_intf->p_sys->MessagesDlg = new Messages( p_intf, NULL );
return TRUE;
}
//---------------------------------------------------------------------------
// REFRESH TIMER CALLBACK
//---------------------------------------------------------------------------
gboolean RefreshTimer( gpointer data )
{
intf_thread_t *p_intf = (intf_thread_t *)data;
SkinManage( p_intf );
return true;
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
...@@ -196,19 +252,18 @@ void GTK2Proc( GdkEvent *event, gpointer data ) ...@@ -196,19 +252,18 @@ void GTK2Proc( GdkEvent *event, gpointer data )
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void OSRun( intf_thread_t *p_intf ) void OSRun( intf_thread_t *p_intf )
{ {
static char *p_args[] = { "" };
// Create VLC event object processing // Create VLC event object processing
CallBackObjects *callbackobj = new CallBackObjects(); CallBackObjects *callbackobj = new CallBackObjects();
callbackobj->Proc = new VlcProc( p_intf ); callbackobj->Proc = new VlcProc( p_intf );
callbackobj->Loop = g_main_loop_new( NULL, TRUE );
// Set event callback wxTheApp = new Instance( p_intf, callbackobj );
gdk_event_handler_set( GTK2Proc, (gpointer)callbackobj, NULL );
// Add timer // Add timer
g_timeout_add( 200, (GSourceFunc)RefreshTimer, (gpointer)p_intf ); g_timeout_add( 200, (GSourceFunc)RefreshTimer, (gpointer)p_intf );
// Main event loop wxEntry( 1, p_args );
g_main_loop_run( callbackobj->Loop );
delete callbackobj; delete callbackobj;
} }
......
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