Commit 8092e418 authored by Olivier Teulière's avatar Olivier Teulière

 * Added a win32 interface plugin, developed with Borland C++ Builder.
   To build the plugin, follow the instructions in INSTALL-win32.txt

 * Known bugs:
        - subtitles don't work
        - a crash occurs when the user exits by pressing 'q' in the vout
        - when moving the slider, position in the stream updates even if
          the slider isn't released yet

 * TODO list:
        - clean code in menu.cpp
        - adapt lool's enhancements of the Gtk+ preferences box
        - write drag-and-drop stuff
        - and of course, fix known bugs :)

 * For those of you who can't wait till the next release to test the win32
   interface, binary files are available here:
   http://www.via.ecp.fr/~ipkiss/intfwin/vlc.zip
   Enjoy!
parent b1afd5e6
......@@ -11,14 +11,12 @@ to use the command line arguments. You can obtain a list of these command
line arguments by typing 'vlc --help'.
It is also sometimes useful to display vlc's debug console. You can do so
by running 'vlc -v'.
This feature is at the moment broken. To display vlc's debug messages,
open the menu 'view', select 'messages'.
To store a debug log of the current vlc session, you can use
'vlc -vvv --stdout=debug.txt'.
If you want to play a DVD, run vlc and click on the Disc option in the
interface. You then have to type your drive letter in the 'Device name'
box including the final '\' (eg. 'D:\' if your dvdrom drive is assigned the letter 'D').
box (eg. 'D:' if your dvdrom drive is assigned the letter 'D').
( !Warning: you have to be in administrator mode (for now) on Win2k )
......@@ -60,8 +58,7 @@ See `./configure --help' for more information.
For example if you are cross-compiling from Debian, you can use something
along those lines:
make distclean ; CC=i586-mingw32msvc-gcc CFLAGS=-I/usr/i586-mingw32msvc \
RANLIB=i586-mingw32msvc-ranlib WINDRES=i586-mingw32msvc-windres \
make distclean ; CC=i586-mingw32msvc-gcc \
./configure --host=i586-mingw32msvc --target=i586-mingw32msvc \
--build=i386-linux --with-gtk-config-path=/usr/i586-mingw32msvc/bin \
--with-sdl-config-path=/usr/i586-mingw32msvc/bin
......@@ -95,5 +92,31 @@ If you are using the tools from http://www.libsdl.org/Xmingw32/ you can type som
PATH=/usr/local/cross-tools/bin:/usr/local/cross-tools/i386-mingw32msvc/bin:$PATH \
make
Building Win32 interface with bcc32 (Borland's compiler)
========================================================
[Steps 2 and 3 are temporary]
1) Compile vlc as usual.
include\defs.h should be generated.
2) Edit include\defs.h, and add the following lines if necessary:
#define WIN32
#define MODULE_NAME win32
#define MODULE_NAME_IS win32
#define PLUGIN
#define HAVE_DYNAMIC_PLUGINS
3) Still in defs.h, comment the following line to avoid compilation warnings:
#define PACKAGE "vlc"
4) From the plugin\win32 directory, use Borland C++ command-line tools
as follows:
bpr2mak intfwin.bpr // Create a makefile from intfwin.bpr
make -fintfwin // It's Borland's make utility !
5) This should create a intfwin.so
You can remove any other generated file.
Well done, now you're ready to use vlc!
......@@ -3,7 +3,7 @@
* Collection of useful common types and macros definitions
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: common.h,v 1.88 2002/03/19 04:22:02 ipkiss Exp $
* $Id: common.h,v 1.89 2002/03/25 23:36:57 ipkiss Exp $
*
* Authors: Samuel Hocevar <sam@via.ecp.fr>
* Vincent Seguin <seguin@via.ecp.fr>
......@@ -425,7 +425,7 @@ typedef __int64 off_t;
# if defined( __BORLANDC__ )
# undef off_t
# define off_t __int64
# define off_t unsigned __int64
# endif
# ifndef O_NONBLOCK
......
/*****************************************************************************
* about.cpp: The "About" dialog box
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include <vcl.h>
#pragma hdrstop
#include <videolan/vlc.h>
#include "interface.h"
#include "about.h"
#include "win32_common.h"
//---------------------------------------------------------------------------
//#pragma package(smart_init)
#pragma resource "*.dfm"
//---------------------------------------------------------------------------
__fastcall TAboutDlg::TAboutDlg( TComponent* Owner )
: TForm( Owner )
{
}
//---------------------------------------------------------------------------
This diff is collapsed.
/*****************************************************************************
* about.h: The "About" dialog box
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef aboutH
#define aboutH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
//---------------------------------------------------------------------------
class TAboutDlg : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TLabel *Label2;
TLabel *Label21;
TGroupBox *GroupBoxAuthors;
TLabel *Label3;
TLabel *Label4;
TLabel *Label5;
TLabel *Label6;
TLabel *Label7;
TLabel *Label8;
TLabel *Label9;
TLabel *Label10;
TLabel *Label11;
TLabel *Label12;
TLabel *Label13;
TLabel *Label14;
TLabel *Label15;
TLabel *Label16;
TLabel *Label17;
TLabel *Label18;
TLabel *Label19;
TLabel *Label20;
TBitBtn *BitBtnOk;
private: // User declarations
public: // User declarations
__fastcall TAboutDlg( TComponent* Owner );
};
//---------------------------------------------------------------------------
#endif
/*****************************************************************************
* control.cpp: functions to handle stream control buttons.
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include <vcl.h>
#include <videolan/vlc.h>
#include "stream_control.h"
#include "input_ext-intf.h"
#include "interface.h"
#include "intf_playlist.h"
#include "win32_common.h"
extern struct intf_thread_s *p_intfGlobal;
/****************************************************************************
* Control functions: this is where the functions are defined
****************************************************************************
* These functions are used by toolbuttons callbacks
****************************************************************************/
bool ControlBack( TObject *Sender )
{
/* FIXME: TODO */
return false;
}
bool ControlStop( TObject *Sender )
{
if( p_input_bank->pp_input[0] != NULL )
{
/* end playing item */
p_input_bank->pp_input[0]->b_eof = 1;
/* update playlist */
vlc_mutex_lock( &p_main->p_playlist->change_lock );
p_main->p_playlist->i_index--;
p_main->p_playlist->b_stopped = 1;
vlc_mutex_unlock( &p_main->p_playlist->change_lock );
}
return true;
}
bool ControlPlay( TObject *Sender )
{
if( p_input_bank->pp_input[0] != NULL )
{
input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );
p_main->p_playlist->b_stopped = 0;
}
else
{
vlc_mutex_lock( &p_main->p_playlist->change_lock );
if( p_main->p_playlist->b_stopped )
{
if( p_main->p_playlist->i_size )
{
vlc_mutex_unlock( &p_main->p_playlist->change_lock );
intf_PlaylistJumpto( p_main->p_playlist,
p_main->p_playlist->i_index );
}
else
{
vlc_mutex_unlock( &p_main->p_playlist->change_lock );
p_intfGlobal->p_sys->p_window->MenuOpenFileClick( Sender );
}
}
else
{
vlc_mutex_unlock( &p_main->p_playlist->change_lock );
}
}
return true;
}
bool ControlPause( TObject *Sender )
{
if( p_input_bank->pp_input[0] != NULL )
{
input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PAUSE );
vlc_mutex_lock( &p_main->p_playlist->change_lock );
p_main->p_playlist->b_stopped = 0;
vlc_mutex_unlock( &p_main->p_playlist->change_lock );
}
return true;
}
bool ControlSlow( TObject *Sender )
{
if( p_input_bank->pp_input[0] != NULL )
{
input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_SLOWER );
vlc_mutex_lock( &p_main->p_playlist->change_lock );
p_main->p_playlist->b_stopped = 0;
vlc_mutex_unlock( &p_main->p_playlist->change_lock );
}
return true;
}
bool ControlFast( TObject *Sender )
{
if( p_input_bank->pp_input[0] != NULL )
{
input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_FASTER );
vlc_mutex_lock( &p_main->p_playlist->change_lock );
p_main->p_playlist->b_stopped = 0;
vlc_mutex_unlock( &p_main->p_playlist->change_lock );
}
return true;
}
/*****************************************************************************
* control.h: prototypes for control functions.
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
bool ControlBack ( TObject *Sender );
bool ControlStop ( TObject *Sender );
bool ControlPlay ( TObject *Sender );
bool ControlPause( TObject *Sender );
bool ControlSlow ( TObject *Sender );
bool ControlFast ( TObject *Sender );
/*****************************************************************************
* disc.cpp: "Open disc" dialog box.
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include <vcl.h>
#pragma hdrstop
#include <videolan/vlc.h>
#include "stream_control.h"
#include "input_ext-intf.h"
#include "interface.h"
#include "intf_playlist.h"
#include "win32_common.h"
#include "disc.h"
//---------------------------------------------------------------------------
//#pragma package(smart_init)
#pragma resource "*.dfm"
extern struct intf_thread_s *p_intfGlobal;
//---------------------------------------------------------------------------
__fastcall TDiscDlg::TDiscDlg( TComponent* Owner )
: TForm( Owner )
{
char *psz_dvd_device = config_GetPszVariable( "dvd_device" );
char *psz_vcd_device = config_GetPszVariable( "vcd_device" );
if( psz_dvd_device )
{
EditDevice->Text.sprintf( "%s", psz_dvd_device );
free( psz_dvd_device );
}
if( psz_vcd_device )
{
EditDevice->Text.sprintf( "%s", psz_vcd_device );
free( psz_vcd_device );
}
}
//---------------------------------------------------------------------------
void __fastcall TDiscDlg::FormShow( TObject *Sender )
{
p_intfGlobal->p_sys->p_window->MenuOpenDisc->Checked = true;
p_intfGlobal->p_sys->p_window->PopupOpenDisc->Checked = true;
}
//---------------------------------------------------------------------------
void __fastcall TDiscDlg::FormHide( TObject *Sender )
{
p_intfGlobal->p_sys->p_window->MenuOpenDisc->Checked = false;
p_intfGlobal->p_sys->p_window->PopupOpenDisc->Checked = false;
}
//---------------------------------------------------------------------------
void __fastcall TDiscDlg::BitBtnCancelClick( TObject *Sender )
{
Hide();
}
//---------------------------------------------------------------------------
void __fastcall TDiscDlg::BitBtnOkClick( TObject *Sender )
{
AnsiString Device, Source, Method, Title, Chapter;
int i_end = p_main->p_playlist->i_size;
Hide();
Device = EditDevice->Text;
/* Check which method was activated */
if( RadioGroupType->ItemIndex == 0 )
{
Method = "dvd";
}
else
{
Method = "vcd";
}
/* Select title and chapter */
Title.sprintf( "%d", UpDownTitle->Position );
Chapter.sprintf( "%d", UpDownChapter->Position );
/* Build source name and add it to playlist */
Source = Method + ":" + Device + "@" + Title + "," + Chapter;
intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, Source.c_str() );
/* update the display */
p_intfGlobal->p_sys->p_playlist->UpdateGrid( p_main->p_playlist );
/* stop current item, select added item */
if( p_input_bank->pp_input[0] != NULL )
{
p_input_bank->pp_input[0]->b_eof = 1;
}
intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );
}
//---------------------------------------------------------------------------
This diff is collapsed.
/*****************************************************************************
* disc.h: "Open disc" dialog box.
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef discH
#define discH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TDiscDlg : public TForm
{
__published: // IDE-managed Components
TLabel *LabelDevice;
TGroupBox *GroupBoxPosition;
TLabel *LabelTitle;
TLabel *LabelChapter;
TEdit *EditTitle;
TEdit *EditChapter;
TUpDown *UpDownTitle;
TUpDown *UpDownChapter;
TRadioGroup *RadioGroupType;
TBitBtn *BitBtnOk;
TBitBtn *BitBtnCancel;
TEdit *EditDevice;
void __fastcall FormShow(TObject *Sender);
void __fastcall FormHide(TObject *Sender);
void __fastcall BitBtnCancelClick(TObject *Sender);
void __fastcall BitBtnOkClick(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TDiscDlg( TComponent* Owner );
};
//---------------------------------------------------------------------------
#endif
/*****************************************************************************
* intf_win32.cpp: Win32 interface plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <vcl.h>
#include <stdlib.h> /* malloc(), free() */
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <videolan/vlc.h>
#include "stream_control.h"
#include "input_ext-intf.h"
#include "interface.h"
#include "mainframe.h"
#include "menu.h"
#include "win32_common.h"
struct intf_thread_s *p_intfGlobal;
/*****************************************************************************
* Local prototypes.
*****************************************************************************/
static int intf_Open ( intf_thread_t *p_intf );
static void intf_Close ( intf_thread_t *p_intf );
static void intf_Run ( intf_thread_t *p_intf );
int Win32Manage( void *p_data );
/*****************************************************************************
* Functions exported as capabilities. They are declared as static so that
* we don't pollute the namespace too much.
*****************************************************************************/
void _M( intf_getfunctions )( function_list_t * p_function_list )
{
p_function_list->functions.intf.pf_open = intf_Open;
p_function_list->functions.intf.pf_close = intf_Close;
p_function_list->functions.intf.pf_run = intf_Run;
}
/*****************************************************************************
* intf_Open: initialize interface
*****************************************************************************/
static int intf_Open( intf_thread_t *p_intf )
{
/* Allocate instance and initialize some members */
p_intf->p_sys = (intf_sys_s *) malloc( sizeof( intf_sys_t ) );
if( p_intf->p_sys == NULL )
{
intf_ErrMsg( "intf error: %s", strerror(ENOMEM) );
return( 1 );
};
p_intfGlobal = p_intf;
p_intf->p_sys->p_sub = intf_MsgSub();
/* Initialize Win32 thread */
p_intf->p_sys->b_playing = 0;
p_intf->p_sys->b_popup_changed = 0;
p_intf->p_sys->i_playing = -1;
p_intf->p_sys->b_slider_free = 1;
return( 0 );
}
/*****************************************************************************
* intf_Close: destroy interface
*****************************************************************************/
static void intf_Close( intf_thread_t *p_intf )
{
intf_MsgUnsub( p_intf->p_sys->p_sub );
/* Destroy structure */
free( p_intf->p_sys );
}
/*****************************************************************************
* intf_Run: main loop
*****************************************************************************/
static void intf_Run( intf_thread_t *p_intf )
{
p_intf->p_sys->p_window = new TMainFrameDlg( NULL );
p_intf->p_sys->p_playlist = new TPlaylistDlg( NULL );
p_intf->p_sys->p_messages = new TMessagesDlg( NULL );
p_intf->p_sys->p_window->ShowModal();
if( p_intf->p_sys->p_disc ) delete p_intf->p_sys->p_disc;
if( p_intf->p_sys->p_network ) delete p_intf->p_sys->p_network;
if( p_intf->p_sys->p_preferences ) delete p_intf->p_sys->p_preferences;
delete p_intf->p_sys->p_messages;
delete p_intf->p_sys->p_playlist;
}
/*****************************************************************************
* Win32Manage: manage main thread messages
*****************************************************************************
* In this function, called approx. 10 times a second, we check what the
* main program wanted to tell us.
*****************************************************************************/
int Win32Manage( intf_thread_t *p_intf )
{
vlc_mutex_lock( &p_intf->change_lock );
/* If the "display popup" flag has changed */
if( p_intf->b_menu_change )
{
/* FIXME: It would be nice to close the popup when the user left-clicks
elsewhere, or to actualize the position when he right-clicks again,
but i couldn't find a way to close it :-( */
TPoint MousePos = Mouse->CursorPos;
p_intf->p_sys->p_window->PopupMenuMain->Popup( MousePos.x, MousePos.y );
p_intf->b_menu_change = 0;
}
/* Update the log window */
p_intf->p_sys->p_messages->UpdateLog();
/* Update the playlist */
p_intf->p_sys->p_playlist->Manage( p_intf );
if( p_input_bank->pp_input[0] != NULL )
{
vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );
if( !p_input_bank->pp_input[0]->b_die )
{
/* New input or stream map change */
if( p_input_bank->pp_input[0]->stream.b_changed )
{
p_intf->p_sys->p_window->ModeManage();
SetupMenus( p_intf );
p_intf->p_sys->b_playing = 1;
}
/* Manage the slider */
if( p_input_bank->pp_input[0]->stream.b_seekable &&
p_intf->p_sys->b_playing )
{
TTrackBar * TrackBar = p_intf->p_sys->p_window->TrackBar;
off_t NewValue = TrackBar->Position;
#define p_area p_input_bank->pp_input[0]->stream.p_selected_area
/* If the user hasn't touched the slider since the last time,
* then the input can safely change it */
if( NewValue == p_intf->p_sys->OldValue )
{
/* Update the value */
TrackBar->Position = p_intf->p_sys->OldValue =
( (off_t)SLIDER_MAX_VALUE * p_area->i_tell ) /
p_area->i_size;
}
/* Otherwise, send message to the input if the user has
* finished dragging the slider */
else if( p_intf->p_sys->b_slider_free )
{
off_t i_seek = ( NewValue * p_area->i_size ) /
(off_t)SLIDER_MAX_VALUE;
/* release the lock to be able to seek */
vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );
input_Seek( p_input_bank->pp_input[0], i_seek );
vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );
/* Update the old value */
p_intf->p_sys->OldValue = NewValue;
}
/* Update the display */
// TrackBar->Invalidate();
# undef p_area
}
if( p_intf->p_sys->i_part !=
p_input_bank->pp_input[0]->stream.p_selected_area->i_part )
{
// p_intf->p_sys->b_chapter_update = 1;
SetupMenus( p_intf );
}
}
vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );
}
else if( p_intf->p_sys->b_playing && !p_intf->b_die )
{
p_intf->p_sys->p_window->ModeManage();
p_intf->p_sys->b_playing = 0;
}
/* Manage core vlc functions through the callback */
p_intf->pf_manage( p_intf );
if( p_intf->b_die )
{
vlc_mutex_unlock( &p_intf->change_lock );
/* Prepare to die, young Skywalker */
p_intf->p_sys->p_window->ModalResult = mrOk;
delete p_intf->p_sys->p_window;
/* Just in case */
return( FALSE );
}
vlc_mutex_unlock( &p_intf->change_lock );
return( TRUE );
}
USEUNIT("win32.cpp");
USEUNIT("intf_win32.cpp");
USEFORM("mainframe.cpp", MainFrameDlg);
USEFORM("network.cpp", NetworkDlg);
USEFORM("playlist.cpp", PlaylistDlg);
USEFORM("preferences.cpp", PreferencesDlg);
USEFORM("about.cpp", AboutDlg);
USEFORM("disc.cpp", DiscDlg);
USEUNIT("control.cpp");
USE("win32_common.h", File);
USEUNIT("menu.cpp");
USEFORM("messages.cpp", MessagesDlg);
//---------------------------------------------------------------------------
This file is used by the project manager only and should be treated like the project file
DllEntryPoint
\ No newline at end of file
<?xml version='1.0' encoding='utf-8' ?>
<!-- C++Builder XML Project -->
<PROJECT>
<MACROS>
<VERSION value="BCB.05.03"/>
<PROJECT value="intfwin.so"/>
<OBJFILES value="win32.obj intf_win32.obj mainframe.obj network.obj playlist.obj
preferences.obj about.obj disc.obj control.obj menu.obj messages.obj"/>
<RESFILES value=""/>
<DEFFILE value=""/>
<RESDEPEN value="$(RESFILES) mainframe.dfm network.dfm playlist.dfm preferences.dfm
about.dfm disc.dfm messages.dfm"/>
<LIBFILES value=""/>
<LIBRARIES value="VCL50.lib"/>
<SPARELIBS value="VCL50.lib"/>
<PACKAGES value="VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi
ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi
VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi"/>
<PATHCPP value=".;"/>
<PATHPAS value=".;"/>
<PATHRC value=".;"/>
<PATHASM value=".;"/>
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
<RELEASELIBPATH value="$(BCB)\lib\release"/>
<LINKER value="tlink32"/>
<USERDEFINES value="_DEBUG"/>
<SYSDEFINES value="NO_STRICT"/>
<MAINSOURCE value="intfwin.bpf"/>
<INCLUDEPATH value="..\..\win32;$(BCB)\include;$(BCB)\include\vcl;..\..\include;..\..\src\misc"/>
<LIBPATH value="..\..\win32;$(BCB)\lib\obj;$(BCB)\lib"/>
<WARNINGS value="-w-par"/>
</MACROS>
<OPTIONS>
<CFLAG1 value="-WD -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi-
-tWD -tWM -c"/>
<PFLAGS value="-$Y+ -$W -$O- -v -JPHNE -M"/>
<RFLAGS value=""/>
<AFLAGS value="/mx /w2 /zi"/>
<LFLAGS value="-D&quot;&quot; -aa -Tpd -x -Gn -Gi -v"/>
</OPTIONS>
<LINKER>
<ALLOBJ value="c0d32.obj sysinit.obj $(OBJFILES)"/>
<ALLRES value="$(RESFILES)"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
</LINKER>
<IDEOPTIONS>
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1036
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[HistoryLists\hlIncludePath]
Count1=
Item0=..\win32;..\..\win32;$(BCB)\include;$(BCB)\include\vcl;..\..\include;..\..\src\misc
[HistoryLists\hlLibraryPath]
Count=1
Item0=..\win32;..\..\win32;$(BCB)\lib\obj;$(BCB)\lib
[HistoryLists\hlDebugSourcePath]
Count=1
Item0=$(BCB)\source\vcl
[HistoryLists\hlConditionals]
Count=1
Item0=_DEBUG
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
[Parameters]
RunParams=
HostApplication=
RemoteHost=
RemotePath=
RemoteDebug=0
[Compiler]
ShowInfoMsgs=0
LinkDebugVcl=0
LinkCGLIB=0
[Language]
ActiveLang=
ProjectLang=
RootDir=
</IDEOPTIONS>
</PROJECT>
This diff is collapsed.
This diff is collapsed.
/*****************************************************************************
* mainframe.h: Prototype for main window
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef mainframeH
#define mainframeH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <Dialogs.hpp>
#include <ImgList.hpp>
#include <Menus.hpp>
#include <ToolWin.hpp>
#include <AppEvnts.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TMainFrameDlg : public TForm
{
__published: // IDE-managed Components
TToolBar *ToolBar1;
TToolButton *ToolButtonFile;
TToolButton *ToolButtonDisc;
TToolButton *ToolButtonNet;
TToolButton *ToolButtonSep1;
TToolButton *ToolButtonBack;
TToolButton *ToolButtonStop;
TToolButton *ToolButtonPlay;
TToolButton *ToolButtonPause;
TToolButton *ToolButtonSlow;
TToolButton *ToolButtonFast;
TToolButton *ToolButtonSep2;
TToolButton *ToolButtonPlaylist;
TToolButton *ToolButtonPrev;
TToolButton *ToolButtonNext;
TMainMenu *MainMenu1;
TMenuItem *MenuFile;
TMenuItem *MenuOpenFile;
TMenuItem *MenuOpenDisc;
TMenuItem *MenuNetworkStream;
TMenuItem *N1;
TMenuItem *MenuExit;
TMenuItem *MenuView;
TMenuItem *MenuHideinterface;
TMenuItem *MenuFullscreen;
TMenuItem *N2;
TMenuItem *MenuTitle;
TMenuItem *MenuChapter;
TMenuItem *MenuAngle;
TMenuItem *N3;
TMenuItem *MenuPlaylist;
TMenuItem *MenuModules;
TMenuItem *MenuMessages;
TMenuItem *MenuSettings;
TMenuItem *MenuAudio;
TMenuItem *MenuSubtitles;
TMenuItem *N4;
TMenuItem *MenuPreferences;
TMenuItem *MenuHelp;
TMenuItem *MenuAbout;
TOpenDialog *OpenDialog1;
TImageList *ImageListToolbar;
TPopupMenu *PopupMenuMain;
TMenuItem *PopupPlay;
TMenuItem *PopupPause;
TMenuItem *PopupStop;
TMenuItem *PopupBack;
TMenuItem *PopupSlow;
TMenuItem *PopupFast;
TMenuItem *N5;
TMenuItem *PopupToggleInterface;
TMenuItem *PopupFullscreen;
TMenuItem *N6;
TMenuItem *PopupNext;
TMenuItem *PopupPrev;
TMenuItem *PopupJump;
TMenuItem *PopupNavigation;
TMenuItem *PopupProgram;
TMenuItem *PopupAudio;
TMenuItem *PopupSubtitles;
TMenuItem *PopupFile;
TMenuItem *PopupPlaylist;
TMenuItem *PopupPreferences;
TMenuItem *N7;
TMenuItem *PopupExit;
TToolButton *ToolButtonEject;
TStatusBar *StatusBar;
TGroupBox *GroupBoxFile;
TLabel *LabelFileName;
TGroupBox *GroupBoxNetwork;
TEdit *EditChannel;
TUpDown *UpDownChannel;
TLabel *LabelChannel;
TLabel *LabelServer;
TGroupBox *GroupBoxDisc;
TMenuItem *N8;
TMenuItem *MenuEjectDisc;
TMenuItem *MenuProgram;
TLabel *LabelDisc;
TLabel *LabelTitle;
TButton *ButtonTitlePrev;
TButton *ButtonTitleNext;
TButton *ButtonChapterPrev;
TButton *ButtonChapterNext;
TLabel *LabelChapter;
TLabel *LabelTitleCurrent;
TLabel *LabelChapterCurrent;
TButton *ButtonGo;
TGroupBox *GroupBoxSlider;
TTrackBar *TrackBar;
TTimer *TimerManage;
TMenuItem *PopupOpenFile;
TMenuItem *PopupOpenDisc;
TMenuItem *PopupNetworkStream;
TMenuItem *PopupClose;
TMenuItem *N9;
void __fastcall TimerManageTimer( TObject *Sender );
void __fastcall TrackBarChange( TObject *Sender );
void __fastcall FormClose( TObject *Sender, TCloseAction &Action );
void __fastcall MenuOpenFileClick( TObject *Sender );
void __fastcall MenuOpenDiscClick( TObject *Sender );
void __fastcall MenuNetworkStreamClick( TObject *Sender );
void __fastcall MenuExitClick( TObject *Sender );
void __fastcall MenuFullscreenClick( TObject *Sender );
void __fastcall MenuPlaylistClick( TObject *Sender );
void __fastcall MenuMessagesClick( TObject *Sender );
void __fastcall MenuPreferencesClick( TObject *Sender );
void __fastcall MenuAboutClick( TObject *Sender );
void __fastcall ToolButtonFileClick( TObject *Sender );
void __fastcall ToolButtonDiscClick( TObject *Sender );
void __fastcall ToolButtonNetClick( TObject *Sender );
void __fastcall ToolButtonPlaylistClick( TObject *Sender );
void __fastcall ToolButtonBackClick( TObject *Sender );
void __fastcall ToolButtonStopClick( TObject *Sender );
void __fastcall ToolButtonPlayClick( TObject *Sender );
void __fastcall ToolButtonPauseClick( TObject *Sender );
void __fastcall ToolButtonSlowClick( TObject *Sender );
void __fastcall ToolButtonFastClick( TObject *Sender );
void __fastcall ToolButtonPrevClick( TObject *Sender );
void __fastcall ToolButtonNextClick( TObject *Sender );
void __fastcall ToolButtonEjectClick( TObject *Sender );
void __fastcall PopupCloseClick( TObject *Sender );
void __fastcall PopupPlayClick( TObject *Sender );
void __fastcall PopupPauseClick( TObject *Sender );
void __fastcall PopupStopClick( TObject *Sender );
void __fastcall PopupBackClick( TObject *Sender );
void __fastcall PopupSlowClick( TObject *Sender );
void __fastcall PopupFastClick( TObject *Sender );
void __fastcall PopupToggleInterfaceClick( TObject *Sender );
void __fastcall PopupFullscreenClick( TObject *Sender );
void __fastcall PopupNextClick( TObject *Sender );
void __fastcall PopupPrevClick( TObject *Sender );
void __fastcall PopupJumpClick( TObject *Sender );
void __fastcall PopupPlaylistClick( TObject *Sender );
void __fastcall PopupPreferencesClick( TObject *Sender );
void __fastcall PopupExitClick( TObject *Sender );
void __fastcall PopupOpenFileClick( TObject *Sender );
void __fastcall PopupOpenDiscClick( TObject *Sender );
void __fastcall PopupNetworkStreamClick( TObject *Sender );
void __fastcall ButtonTitlePrevClick( TObject *Sender );
void __fastcall ButtonTitleNextClick( TObject *Sender );
void __fastcall ButtonChapterPrevClick( TObject *Sender );
void __fastcall ButtonChapterNextClick( TObject *Sender );
void __fastcall ButtonGoClick( TObject *Sender );
private: // User declarations
public: // User declarations
__fastcall TMainFrameDlg( TComponent* Owner );
void __fastcall DisplayHint( TObject *Sender );
void __fastcall ModeManage();
void __fastcall MenuProgramClick( TObject *Sender );
void __fastcall MenuAudioClick( TObject *Sender );
void __fastcall MenuSubtitleClick( TObject *Sender );
void __fastcall MenuTitleClick( TObject *Sender );
void __fastcall MenuChapterClick( TObject *Sender );
void __fastcall PopupProgramClick( TObject *Sender );
void __fastcall PopupAudioClick( TObject *Sender );
void __fastcall PopupSubtitleClick( TObject *Sender );
void __fastcall PopupNavigationClick( TObject *Sender );
};
//---------------------------------------------------------------------------
#endif
This diff is collapsed.
/*****************************************************************************
* menu.h: prototypes for menu functions
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
struct intf_thread_s;
int __fastcall SetupMenus( struct intf_thread_s * );
/*****************************************************************************
* Convert user_data structures to title and chapter information
*****************************************************************************/
#define DATA2TITLE( data ) ( (int)((long)(data)) >> 16 )
#define DATA2CHAPTER( data ) ( (int)((long)(data)) & 0xffff )
#define POS2DATA( title, chapter ) ( NULL + ( ((title) << 16) \
| ((chapter) & 0xffff)) )
/*****************************************************************************
* messages.cpp: log window.
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include <vcl.h>
#pragma hdrstop
#include <videolan/vlc.h>
#include "interface.h"
#include "win32_common.h"
#include "messages.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
extern struct intf_thread_s *p_intfGlobal;
//---------------------------------------------------------------------------
__fastcall TMessagesDlg::TMessagesDlg( TComponent* Owner )
: TForm( Owner )
{
Icon = p_intfGlobal->p_sys->p_window->Icon;
}
//---------------------------------------------------------------------------
void __fastcall TMessagesDlg::ButtonOKClick( TObject *Sender )
{
Hide();
}
//---------------------------------------------------------------------------
void __fastcall TMessagesDlg::FormHide( TObject *Sender )
{
p_intfGlobal->p_sys->p_window->MenuMessages->Checked = false;
}
//---------------------------------------------------------------------------
void __fastcall TMessagesDlg::FormShow( TObject *Sender )
{
p_intfGlobal->p_sys->p_window->MenuMessages->Checked = true;
}
//---------------------------------------------------------------------------
void __fastcall TMessagesDlg::UpdateLog()
{
intf_subscription_t *p_sub = p_intfGlobal->p_sys->p_sub;
int i_start;
int i_stop;
vlc_mutex_lock( p_sub->p_lock );
i_stop = *p_sub->pi_stop;
vlc_mutex_unlock( p_sub->p_lock );
if( p_sub->i_start != i_stop )
{
for( i_start = p_sub->i_start;
i_start != i_stop;
i_start = (i_start+1) % INTF_MSG_QSIZE )
{
/* Append all messages to log window */
switch( p_sub->p_msg[i_start].i_type )
{
case INTF_MSG_ERR:
RichEditMessages->SelAttributes->Color = clRed;
break;
case INTF_MSG_WARN:
RichEditMessages->SelAttributes->Color = clBlack;
break;
default:
RichEditMessages->SelAttributes->Color = clBlue;
break;
}
RichEditMessages->Lines->Add( p_sub->p_msg[i_start].psz_msg );
}
vlc_mutex_lock( p_sub->p_lock );
p_sub->i_start = i_start;
vlc_mutex_unlock( p_sub->p_lock );
}
}
//---------------------------------------------------------------------------
object MessagesDlg: TMessagesDlg
Left = 325
Top = 160
Width = 440
Height = 502
Caption = 'Messages'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clPurple
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnHide = FormHide
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object RichEditMessages: TRichEdit
Left = 0
Top = 0
Width = 432
Height = 424
Align = alTop
Anchors = [akLeft, akTop, akRight, akBottom]
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 0
WantReturns = False
end
object ButtonOK: TButton
Left = 144
Top = 437
Width = 145
Height = 25
Anchors = [akBottom]
Caption = 'OK'
TabOrder = 1
OnClick = ButtonOKClick
end
end
/*****************************************************************************
* messages.h: log window
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef messagesH
#define messagesH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TMessagesDlg : public TForm
{
__published: // IDE-managed Components
TRichEdit *RichEditMessages;
TButton *ButtonOK;
void __fastcall ButtonOKClick( TObject *Sender );
void __fastcall FormHide( TObject *Sender );
void __fastcall FormShow( TObject *Sender );
private: // User declarations
public: // User declarations
__fastcall TMessagesDlg( TComponent* Owner );
void __fastcall UpdateLog();
};
//---------------------------------------------------------------------------
#endif
This diff is collapsed.
This diff is collapsed.
/*****************************************************************************
* network.h: the "network" dialog box
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teuliere <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef networkH
#define networkH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
#define NOT( var ) ( (var) ? false : true )
class TNetworkDlg : public TForm
{
__published: // IDE-managed Components
TRadioGroup *RadioGroupProtocol;
TGroupBox *GroupBoxServer;
TLabel *LabelAddress;
TLabel *LabelPort;
TCheckBox *CheckBoxBroadcast;
TEdit *EditPort;
TComboBox *ComboBoxAddress;
TComboBox *ComboBoxBroadcast;
TUpDown *UpDownPort;
TGroupBox *GroupBoxChannels;
TLabel *LabelPortCS;
TCheckBox *CheckBoxChannel;
TComboBox *ComboBoxChannel;
TEdit *EditPortCS;
TUpDown *UpDownPortCS;
TBitBtn *BitBtnOk;
TBitBtn *BitBtnCancel;
void __fastcall FormShow( TObject *Sender );
void __fastcall FormHide( TObject *Sender );
void __fastcall BitBtnCancelClick(TObject *Sender);
void __fastcall CheckBoxBroadcastClick( TObject *Sender );
void __fastcall CheckBoxChannelClick( TObject *Sender );
void __fastcall BitBtnOkClick(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TNetworkDlg( TComponent* Owner );
};
//---------------------------------------------------------------------------
#endif
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -2,9 +2,8 @@
* win32.cpp : Win32 interface plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: win32.cpp,v 1.1 2002/01/21 00:52:07 sam Exp $
*
* Authors:
* Authors: Olivier Teulière <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -27,14 +26,14 @@
#include <stdlib.h> /* malloc(), free() */
#include <string.h>
extern "C"
{
#include <videolan/vlc.h>
#include "win32.h" /* Borland specific */
/*****************************************************************************
* Capabilities defined in the other files.
*****************************************************************************/
void _M( intf_getfunctions )( function_list_t * p_function_list );
void _M( intf_getfunctions ) ( function_list_t * p_function_list );
/*****************************************************************************
* Build configuration tree.
......@@ -43,7 +42,7 @@ MODULE_CONFIG_START
MODULE_CONFIG_STOP
MODULE_INIT_START
SET_DESCRIPTION( "Win32 interface" )
SET_DESCRIPTION( "Win32 interface module" )
ADD_CAPABILITY( INTF, 100 )
ADD_SHORTCUT( "win32" )
MODULE_INIT_STOP
......@@ -55,4 +54,3 @@ MODULE_ACTIVATE_STOP
MODULE_DEACTIVATE_START
MODULE_DEACTIVATE_STOP
} /* extern "C" */
/*****************************************************************************
* win32.h : Win32 interface plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
*
* Authors: Olivier Teulire <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Exported interface functions.
*****************************************************************************/
extern "C" __declspec(dllexport)
int __VLC_SYMBOL( InitModule ) ( module_t *p_module );
extern "C" __declspec(dllexport)
int __VLC_SYMBOL( ActivateModule ) ( module_t *p_module );
extern "C" __declspec(dllexport)
int __VLC_SYMBOL( DeactivateModule ) ( module_t *p_module );
This diff is collapsed.
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