*
* 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.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include <string.h> /* strdup() */
#include <stdlib.h> /* free() */
#include <vlc/vlc.h>
-#include <vlc/input.h>
#include "vlc_playlist.h"
+#include "charset.h"
#ifdef WIN32 /* optind, getopt(), included in unistd.h */
# include "../extras/getopt.h"
#include <winsock.h>
+extern void __wgetmainargs(int *argc, wchar_t ***wargv, wchar_t ***wenviron,
+ int expand_wildcards, int *startupinfo);
+
/*****************************************************************************
* system_Init: initialize winsock and misc other things.
*****************************************************************************/
-void system_Init( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
+void system_Init( libvlc_int_t *p_this, int *pi_argc, char *ppsz_argv[] )
{
WSADATA Data;
if( (psz_vlc = strrchr( psz_path, '\\' )) ) *psz_vlc = '\0';
- p_this->p_libvlc->psz_vlcpath = strdup( psz_path );
+ p_this->p_libvlc_global->psz_vlcpath = strdup( psz_path );
/* Set the default file-translation mode */
#if !defined( UNDER_CE )
/* Call mdate() once to make sure it is initialized properly */
mdate();
+ /* Replace argv[1..n] with unicode for Windows NT and above */
+ if( GetVersion() < 0x80000000 )
+ {
+ wchar_t **wargv, **wenvp;
+ int i,i_wargc;
+ int si = { 0 };
+ __wgetmainargs(&i_wargc, &wargv, &wenvp, 0, &si);
+
+ for( i = 1; i < i_wargc; i++ )
+ ppsz_argv[i] = FromWide( wargv[i] );
+ }
+
/* WinSock Library Init. */
- if( !WSAStartup( MAKEWORD( 2, 0 ), &Data ) )
+ if( !WSAStartup( MAKEWORD( 2, 2 ), &Data ) )
{
- /* Confirm that the WinSock DLL supports 2.0.*/
- if( LOBYTE( Data.wVersion ) != 2 || HIBYTE( Data.wVersion ) != 0 )
- {
+ /* Aah, pretty useless check, we should always have Winsock 2.2
+ * since it appeared in Win98. */
+ if( LOBYTE( Data.wVersion ) != 2 || HIBYTE( Data.wVersion ) != 2 )
/* We could not find a suitable WinSock DLL. */
WSACleanup( );
- }
else
- {
/* Everything went ok. */
return;
- }
}
/* Let's try with WinSock 1.1 */
{
/* Confirm that the WinSock DLL supports 1.1.*/
if( LOBYTE( Data.wVersion ) != 1 || HIBYTE( Data.wVersion ) != 1 )
- {
/* We could not find a suitable WinSock DLL. */
WSACleanup( );
- }
else
- {
/* Everything went ok. */
return;
- }
}
fprintf( stderr, "error: can't initialize WinSocks\n" );
-
- return;
}
/*****************************************************************************
static void IPCHelperThread( vlc_object_t * );
LRESULT CALLBACK WMCOPYWNDPROC( HWND, UINT, WPARAM, LPARAM );
-void system_Configure( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
+void system_Configure( libvlc_int_t *p_this, int *pi_argc, char *ppsz_argv[] )
{
#if !defined( UNDER_CE )
- p_this->p_libvlc->b_fast_mutex = config_GetInt( p_this, "fast-mutex" );
- p_this->p_libvlc->i_win9x_cv = config_GetInt( p_this, "win9x-cv-method" );
+ p_this->p_libvlc_global->b_fast_mutex = config_GetInt( p_this, "fast-mutex" );
+ p_this->p_libvlc_global->i_win9x_cv = config_GetInt( p_this, "win9x-cv-method" );
/* Raise default priority of the current process */
#ifndef ABOVE_NORMAL_PRIORITY_CLASS
}
}
- if( config_GetInt( p_this, "one-instance" ) )
+ if( config_GetInt( p_this, "one-instance" )
+ || ( config_GetInt( p_this, "one-instance-when-started-from-file" )
+ && config_GetInt( p_this, "started-from-file" ) ) )
{
HANDLE hmutex;
LRESULT CALLBACK WMCOPYWNDPROC( HWND hwnd, UINT uMsg, WPARAM wParam,
LPARAM lParam )
{
- /* zcot's screensaver patch */
- if( uMsg == WM_SYSCOMMAND )
- {
- if( ( wParam & 0xFFF0 ) == SC_SCREENSAVE )
- return 0;
- return DefWindowProc( hwnd, uMsg, wParam, lParam );
- }
- /* End zcot's screensaver patch */
-
if( uMsg == WM_COPYDATA )
{
COPYDATASTRUCT *pwm_data = (COPYDATASTRUCT*)lParam;
if( i_opt || config_GetInt( p_this, "playlist-enqueue" ) )
{
playlist_AddExt( p_playlist, ppsz_argv[i_opt],
- ppsz_argv[i_opt], PLAYLIST_APPEND ,
+ NULL, PLAYLIST_APPEND ,
PLAYLIST_END, -1,
(char const **)( i_options ? &ppsz_argv[i_opt+1] : NULL ),
- i_options );
+ i_options, VLC_TRUE );
} else {
playlist_AddExt( p_playlist, ppsz_argv[i_opt],
- ppsz_argv[i_opt], PLAYLIST_APPEND | PLAYLIST_GO,
+ NULL, PLAYLIST_APPEND | PLAYLIST_GO,
PLAYLIST_END, -1,
(char const **)( i_options ? &ppsz_argv[i_opt+1] : NULL ),
- i_options );
+ i_options, VLC_TRUE );
}
i_opt += i_options;
/*****************************************************************************
* system_End: terminate winsock.
*****************************************************************************/
-void system_End( vlc_t *p_this )
+void system_End( libvlc_int_t *p_this )
{
- if( p_this && p_this->p_libvlc && p_this->p_libvlc->psz_vlcpath )
+ if( p_this && p_this->p_libvlc_global && p_this->p_libvlc_global->psz_vlcpath )
{
- free( p_this->p_libvlc->psz_vlcpath );
- p_this->p_libvlc->psz_vlcpath = NULL;
+ free( p_this->p_libvlc_global->psz_vlcpath );
+ p_this->p_libvlc_global->psz_vlcpath = NULL;
}
WSACleanup();