-static unsigned __stdcall IPCHelperThread( void *data )
-{
- vlc_object_t *p_this = data;
- HWND ipcwindow;
- MSG message;
-
- ipcwindow =
- CreateWindow( L"STATIC", /* name of window class */
- L"VLC ipc "VERSION, /* window title bar text */
- 0, /* window style */
- 0, /* default X coordinate */
- 0, /* default Y coordinate */
- 0, /* window width */
- 0, /* window height */
- NULL, /* no parent window */
- NULL, /* no menu in this window */
- GetModuleHandle(NULL), /* handle of this program instance */
- NULL ); /* sent to WM_CREATE */
-
- SetWindowLongPtr( ipcwindow, GWLP_WNDPROC, (LRESULT)WMCOPYWNDPROC );
- SetWindowLongPtr( ipcwindow, GWLP_USERDATA, (LONG_PTR)p_this );
-
- /* Signal the creation of the thread and events queue */
- SetEvent( hIPCHelperReady );
-
- while( GetMessage( &message, NULL, 0, 0 ) )
- {
- TranslateMessage( &message );
- DispatchMessage( &message );
- }
- return 0;
-}
-
-LRESULT CALLBACK WMCOPYWNDPROC( HWND hwnd, UINT uMsg, WPARAM wParam,
- LPARAM lParam )
-{
- if( uMsg == WM_QUIT )
- {
- PostQuitMessage( 0 );
- }
- else if( uMsg == WM_COPYDATA )
- {
- COPYDATASTRUCT *pwm_data = (COPYDATASTRUCT*)lParam;
- vlc_object_t *p_this;
- playlist_t *p_playlist;
-
- p_this = (vlc_object_t *)
- (uintptr_t)GetWindowLongPtr( hwnd, GWLP_USERDATA );
-
- if( !p_this ) return 0;
-
- /* Add files to the playlist */
- p_playlist = pl_Get( p_this );
-
- if( pwm_data->lpData )
- {
- char **ppsz_argv;
- vlc_ipc_data_t *p_data = (vlc_ipc_data_t *)pwm_data->lpData;
- size_t i_data = 0;
- int i_argc = p_data->argc, i_opt, i_options;
-
- ppsz_argv = (char **)malloc( i_argc * sizeof(char *) );
- for( i_opt = 0; i_opt < i_argc; i_opt++ )
- {
- ppsz_argv[i_opt] = p_data->data + i_data + sizeof(int);
- i_data += sizeof(int) + *((int *)(p_data->data + i_data));
- }
-
- for( i_opt = 0; i_opt < i_argc; i_opt++ )
- {
- i_options = 0;
-
- /* Count the input options */
- while( i_opt + i_options + 1 < i_argc &&
- *ppsz_argv[ i_opt + i_options + 1 ] == ':' )
- {
- i_options++;
- }
-
- char *psz_URI = make_URI( ppsz_argv[i_opt], NULL );
- playlist_AddExt( p_playlist, psz_URI,
- NULL, PLAYLIST_APPEND |
- ( ( i_opt || p_data->enqueue ) ? 0 : PLAYLIST_GO ),
- PLAYLIST_END, -1,
- i_options,
- (char const **)( i_options ? &ppsz_argv[i_opt+1] : NULL ),
- VLC_INPUT_OPTION_TRUSTED,
- true, pl_Unlocked );
-
- i_opt += i_options;
- free( psz_URI );
- }
-
- free( ppsz_argv );
- }
- }
-
- return DefWindowProc( hwnd, uMsg, wParam, lParam );
-}
-
-/*****************************************************************************
- * system_End: terminate winsock.
- *****************************************************************************/
-void system_End( void )