Mariusz Pluciński : gameux: IGameExplorer:: RemoveGame implementation.

Alexandre Julliard julliard at winehq.org
Thu Sep 9 13:56:52 CDT 2010


Module: wine
Branch: master
Commit: bb9a6ea2b05e79319ae4ed563f9147c7a27bbc22
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bb9a6ea2b05e79319ae4ed563f9147c7a27bbc22

Author: Mariusz Pluciński <vshader at gmail.com>
Date:   Tue Sep  7 16:08:39 2010 +0200

gameux: IGameExplorer::RemoveGame implementation.

---

 dlls/gameux/gameexplorer.c       |   33 +++++++++++++++++++++++++++++++--
 dlls/gameux/tests/gameexplorer.c |    8 ++++----
 2 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/dlls/gameux/gameexplorer.c b/dlls/gameux/gameexplorer.c
index deb6475..aabadcd 100644
--- a/dlls/gameux/gameexplorer.c
+++ b/dlls/gameux/gameexplorer.c
@@ -480,6 +480,36 @@ static HRESULT GAMEUX_ParseGDFBinary(struct GAMEUX_GAME_DATA *GameData)
 
     return hr;
 }
+/*******************************************************************
+ * GAMEUX_RemoveRegistryRecord
+ *
+ * Helper function, removes registry key associated with given game instance
+ */
+static HRESULT GAMEUX_RemoveRegistryRecord(GUID* pInstanceID)
+{
+    HRESULT hr;
+    LPWSTR lpRegistryPath = NULL;
+    TRACE("(%s)\n", debugstr_guid(pInstanceID));
+
+    /* first, check is game installed for all users */
+    hr = GAMEUX_buildGameRegistryPath(GIS_ALL_USERS, pInstanceID, &lpRegistryPath);
+    if(SUCCEEDED(hr))
+        hr = HRESULT_FROM_WIN32(RegDeleteKeyExW(HKEY_LOCAL_MACHINE, lpRegistryPath, 0, 0));
+
+    HeapFree(GetProcessHeap(), 0, lpRegistryPath);
+
+    /* if not, check current user */
+    if(FAILED(hr))
+    {
+        hr = GAMEUX_buildGameRegistryPath(GIS_CURRENT_USER, pInstanceID, &lpRegistryPath);
+        if(SUCCEEDED(hr))
+            hr = HRESULT_FROM_WIN32(RegDeleteKeyExW(HKEY_LOCAL_MACHINE, lpRegistryPath, 0, 0));
+
+        HeapFree(GetProcessHeap(), 0, lpRegistryPath);
+    }
+
+    return hr;
+}
 /*******************************************************************************
  * GAMEUX_RegisterGame
  *
@@ -628,8 +658,7 @@ static HRESULT WINAPI GameExplorerImpl_RemoveGame(
     GameExplorerImpl *This = impl_from_IGameExplorer(iface);
 
     TRACE("(%p, %s)\n", This, debugstr_guid(&instanceID));
-    FIXME("stub\n");
-    return E_NOTIMPL;
+    return GAMEUX_RemoveRegistryRecord(&instanceID);
 }
 
 static HRESULT WINAPI GameExplorerImpl_UpdateGame(
diff --git a/dlls/gameux/tests/gameexplorer.c b/dlls/gameux/tests/gameexplorer.c
index d01783d..3e86239 100644
--- a/dlls/gameux/tests/gameexplorer.c
+++ b/dlls/gameux/tests/gameexplorer.c
@@ -446,10 +446,10 @@ static void test_add_remove_game(void)
                 _validateGameRegistryKey(__LINE__, GIS_CURRENT_USER, &guid, &applicationId, sExePath, sExeName, TRUE);
 
                 hr = IGameExplorer_RemoveGame(ge, guid);
-                todo_wine ok(SUCCEEDED(hr), "IGameExplorer::RemoveGame failed (error 0x%08x)\n", hr);
+                ok(SUCCEEDED(hr), "IGameExplorer::RemoveGame failed (error 0x%08x)\n", hr);
             }
 
-            todo_wine _validateGameRegistryKey(__LINE__, GIS_CURRENT_USER, &guid, &applicationId, sExePath, sExeName, FALSE);
+            _validateGameRegistryKey(__LINE__, GIS_CURRENT_USER, &guid, &applicationId, sExePath, sExeName, FALSE);
 
 
             /* try to register game with empty guid */
@@ -464,10 +464,10 @@ static void test_add_remove_game(void)
                 _validateGameRegistryKey(__LINE__, GIS_CURRENT_USER, &guid, &applicationId, sExePath, sExeName, TRUE);
 
                 hr = IGameExplorer_RemoveGame(ge, guid);
-                todo_wine ok(SUCCEEDED(hr), "IGameExplorer::RemoveGame failed (error 0x%08x)\n", hr);
+                ok(SUCCEEDED(hr), "IGameExplorer::RemoveGame failed (error 0x%08x)\n", hr);
             }
 
-            todo_wine _validateGameRegistryKey(__LINE__, GIS_CURRENT_USER, &guid, &applicationId, sExePath, sExeName, FALSE);
+            _validateGameRegistryKey(__LINE__, GIS_CURRENT_USER, &guid, &applicationId, sExePath, sExeName, FALSE);
         }
 
         /* free allocated resources */




More information about the wine-cvs mailing list