]> git.sesse.net Git - vlc/blobdiff - bin/winvlc.c
Qt: put simple preferences section at the top
[vlc] / bin / winvlc.c
index 134d5064cf30a0b843aec8051e991120d4025311..d44773da2542dcf0a752eca00266b2c05c475873 100644 (file)
 # include "config.h"
 #endif
 
+#ifndef UNICODE
 #define UNICODE
+#endif
+
 #include <vlc/vlc.h>
 #include <windows.h>
 #include <shellapi.h>
@@ -76,6 +79,7 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
     putenv("VLC_DATA_PATH=Z:"TOP_SRCDIR"/share");
 #endif
 
+    SetErrorMode(SEM_FAILCRITICALERRORS);
     HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0);
 
     /* SetProcessDEPPolicy */
@@ -105,11 +109,13 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
     if (wargv == NULL)
         return 1;
 
-    char *argv[argc + 3];
+    char *argv[argc + 4];
     BOOL crash_handling = TRUE;
     int j = 0;
+    char *lang = NULL;
 
     argv[j++] = FromWide( L"--media-library" );
+    argv[j++] = FromWide( L"--stats" );
     argv[j++] = FromWide( L"--no-ignore-config" );
     for (int i = 1; i < argc; i++)
     {
@@ -118,6 +124,12 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
             crash_handling = FALSE;
             continue; /* don't give argument to libvlc */
         }
+        if (!wcsncmp(wargv[i], L"--language", 10) )
+        {
+            if (i < argc - 1 && wcsncmp( wargv[i + 1], L"--", 2 ))
+                lang = FromWide (wargv[++i]);
+            continue;
+        }
 
         argv[j++] = FromWide (wargv[i]);
     }
@@ -141,11 +153,35 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
 
     _setmode( STDIN_FILENO, _O_BINARY ); /* Needed for pipes */
 
+    /* */
+    if (!lang)
+    {
+        HKEY h_key;
+        if( RegOpenKeyEx( HKEY_CURRENT_USER, TEXT("Software\\VideoLAN\\VLC\\"), 0, KEY_READ, &h_key )
+                == ERROR_SUCCESS )
+        {
+            TCHAR szData[256];
+            DWORD len = 256;
+            if( RegQueryValueEx( h_key, TEXT("Lang"), NULL, NULL, (LPBYTE) &szData, &len ) == ERROR_SUCCESS )
+                lang = FromWide( szData );
+        }
+    }
+
+    if (lang && strncmp( lang, "auto", 4 ) )
+    {
+        char tmp[11];
+        snprintf(tmp, 11, "LANG=%s", lang);
+        putenv(tmp);
+    }
+    free(lang);
+
     /* Initialize libvlc */
     libvlc_instance_t *vlc;
     vlc = libvlc_new (argc, (const char **)argv);
     if (vlc != NULL)
     {
+        libvlc_set_app_id (vlc, "org.VideoLAN.VLC", PACKAGE_VERSION,
+                           PACKAGE_NAME);
         libvlc_set_user_agent (vlc, "VLC media player", "VLC/"PACKAGE_VERSION);
         libvlc_add_intf (vlc, "hotkeys,none");
         libvlc_add_intf (vlc, "globalhotkeys,none");