]> git.sesse.net Git - vlc/blobdiff - bin/winvlc.c
contribs: updated binary packages for Mac OS X (i686, x86_64, ppc)
[vlc] / bin / winvlc.c
index 874116035847621e195a4aae3262b5224efe6ac8..1b9f47552096c703cd69cfdd8084c7d8ed923fe9 100644 (file)
 static void check_crashdump(void);
 LONG WINAPI vlc_exception_filter(struct _EXCEPTION_POINTERS *lpExceptionInfo);
 # endif
-typedef enum _HEAP_INFORMATION_CLASS {
-        HeapCompatibilityInformation,
-        HeapEnableTerminationOnCorruption
-} HEAP_INFORMATION_CLASS;
-WINBASEAPI BOOL WINAPI HeapSetInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T);
 #define HeapEnableTerminationOnCorruption (HEAP_INFORMATION_CLASS)1
 #endif
 
@@ -123,29 +118,42 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
 #endif
                     int nCmdShow )
 {
-    int argc, ret;
+    int argc;
 #ifndef UNDER_CE
     HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0);
+
+    HINSTANCE h_Kernel32 = LoadLibraryW(L"kernel32.dll");
+    if(h_Kernel32)
+    {
+        BOOL (WINAPI * mySetProcessDEPPolicy)( DWORD dwFlags);
+# define PROCESS_DEP_ENABLE 1
+
+        mySetProcessDEPPolicy = (BOOL WINAPI (*)(DWORD))
+                            GetProcAddress(h_Kernel32, "SetProcessDEPPolicy");
+        if(mySetProcessDEPPolicy)
+            mySetProcessDEPPolicy(PROCESS_DEP_ENABLE);
+        FreeLibrary(h_Kernel32);
+    }
+
     wchar_t **wargv = CommandLineToArgvW (GetCommandLine (), &argc);
     if (wargv == NULL)
         return 1;
 
-    char *argv[argc + 1];
+    char *argv[argc + 2];
     BOOL crash_handling = TRUE;
     int j = 0;
 
+    argv[j++] = FromWide( L"--media-library" );
     argv[j++] = FromWide( L"--no-ignore-config" );
     for (int i = 1; i < argc; i++)
     {
         if(!wcscmp(wargv[i], L"--no-crashdump"))
         {
             crash_handling = FALSE;
+            continue; /* don't give argument to libvlc */
         }
-        else
-        {
-            argv[j] = FromWide (wargv[i]);
-            j++;
-        }
+
+        argv[j++] = FromWide (wargv[i]);
     }
 
     argc = j;
@@ -169,12 +177,9 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
     argc = parse_cmdline (psz_cmdline, &argv);
 #endif
 
-    libvlc_exception_t ex;
-    libvlc_exception_init (&ex);
-
     /* Initialize libvlc */
     libvlc_instance_t *vlc;
-    vlc = libvlc_new (argc, (const char **)argv, &ex);
+    vlc = libvlc_new (argc, (const char **)argv);
     if (vlc != NULL)
     {
         libvlc_add_intf (vlc, "globalhotkeys,none");
@@ -184,14 +189,11 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
         libvlc_release (vlc);
     }
 
-    ret = libvlc_exception_raised (&ex);
-    libvlc_exception_clear (&ex);
-
     for (int i = 0; i < argc; i++)
         free (argv[i]);
 
     (void)hInstance; (void)hPrevInstance; (void)lpCmdLine; (void)nCmdShow;
-    return ret;
+    return 0;
 }
 
 #if !defined( UNDER_CE ) && !defined( _WIN64 )