]> git.sesse.net Git - vlc/commitdiff
* under windows, default directory to save snapshots is now the user's
authorAntoine Cellerier <dionoea@videolan.org>
Mon, 24 Jan 2005 22:57:09 +0000 (22:57 +0000)
committerAntoine Cellerier <dionoea@videolan.org>
Mon, 24 Jan 2005 22:57:09 +0000 (22:57 +0000)
   My Pictures (or Mes Images ... depending on locale) directory

src/video_output/vout_intf.c

index 465be82c4aa9c832d5ec1114306506d6b7175cf9..f468a4a997d698df5785e7e4ea71b9d2c0a3902c 100644 (file)
@@ -275,6 +275,60 @@ int vout_Snapshot( vout_thread_t *p_vout, picture_t *p_pic )
         asprintf( &val.psz_string, "%s/Desktop",
                   p_vout->p_vlc->psz_homedir );
     }
+#elif defined(WIN32) && !defined(UNDER_CE)
+    if( !val.psz_string && p_vout->p_vlc->psz_homedir )
+    {
+        /* Get the My Pictures folder path */
+
+        char *p_mypicturesdir = NULL;
+        typedef HRESULT (WINAPI *SHGETFOLDERPATH)( HWND, int, HANDLE, DWORD,
+                                                   LPSTR );
+        #ifndef CSIDL_FLAG_CREATE
+        #   define CSIDL_FLAG_CREATE 0x8000
+        #endif
+        #ifndef CSIDL_MYPICTURES
+        #   define CSIDL_MYPICTURES 0x27
+        #endif
+        #ifndef SHGFP_TYPE_CURRENT
+        #   define SHGFP_TYPE_CURRENT 0
+        #endif
+
+        HINSTANCE shfolder_dll;
+        SHGETFOLDERPATH SHGetFolderPath ;
+
+        /* load the shfolder dll to retrieve SHGetFolderPath */
+        if( ( shfolder_dll = LoadLibrary( _T("SHFolder.dll") ) ) != NULL )
+        {
+            SHGetFolderPath = (void *)GetProcAddress( shfolder_dll,
+                                                      _T("SHGetFolderPathA") );
+            if ( SHGetFolderPath != NULL )
+            {
+                p_mypicturesdir = (char *)malloc( MAX_PATH );
+                if( p_mypicturesdir ) 
+                    {
+
+                    if( S_OK != SHGetFolderPath( NULL,
+                                        CSIDL_MYPICTURES | CSIDL_FLAG_CREATE,
+                                        NULL, SHGFP_TYPE_CURRENT,
+                                        p_mypicturesdir ) )
+                    {
+                        free( p_mypicturesdir );
+                        p_mypicturesdir = NULL;
+                    }
+                }
+            }
+            FreeLibrary( shfolder_dll );
+        }
+
+        if( p_mypicturesdir == NULL){
+            asprintf( &val.psz_string, "%s/" CONFIG_DIR,
+                  p_vout->p_vlc->psz_homedir );
+        } else {
+            asprintf( &val.psz_string, p_mypicturesdir,
+                  p_vout->p_vlc->psz_homedir );
+            free( p_mypicturesdir );
+        }
+    }
 #else
     if( !val.psz_string && p_vout->p_vlc->psz_homedir )
     {