summaryrefslogtreecommitdiffstats
path: root/loader
diff options
context:
space:
mode:
authorcompn <compn@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-10-17 05:14:21 +0000
committercompn <compn@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-10-17 05:14:21 +0000
commitc040ef56602394c6f11e9f6d9d810ab4874af584 (patch)
tree2c442a29b8de8f26bc451c9148dbe5968717d303 /loader
parent962a99ead20966b1d045271da746492ad1ceb25f (diff)
downloadmpv-c040ef56602394c6f11e9f6d9d810ab4874af584.tar.bz2
mpv-c040ef56602394c6f11e9f6d9d810ab4874af584.tar.xz
Add Coinitialize function to vfw encoder and win32 loader.
Fixes crash when trying to load vp7vfw.dll in vfw2menc. Patch by Gianluigi Tiesi mplayer___netfarm.it http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2007-September/054136.html git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24798 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'loader')
-rw-r--r--loader/win32.c30
-rw-r--r--loader/wine/objbase.h19
2 files changed, 48 insertions, 1 deletions
diff --git a/loader/win32.c b/loader/win32.c
index 127f5bdf59..5bdeb789a6 100644
--- a/loader/win32.c
+++ b/loader/win32.c
@@ -38,6 +38,7 @@ for DLL to know too much about its environment.
#include "wine/debugtools.h"
#include "wine/module.h"
#include "wine/winuser.h"
+#include "wine/objbase.h"
#include <stdio.h>
#include "win32.h"
@@ -3816,6 +3817,12 @@ static int WINAPI expDuplicateHandle(HANDLE hSourceProcessHandle, // handle to
return 1;
}
+static HRESULT WINAPI expCoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
+{
+ dbgprintf("CoInitializeEx(%p, %d) called\n", lpReserved, dwCoInit);
+ return S_OK;
+}
+
// required by PIM1 codec (used by win98 PCTV Studio capture sw)
static HRESULT WINAPI expCoInitialize(
LPVOID lpReserved /* [in] pointer to win32 malloc interface
@@ -3825,7 +3832,26 @@ static HRESULT WINAPI expCoInitialize(
/*
* Just delegate to the newer method.
*/
- return 0; //CoInitializeEx(lpReserved, COINIT_APARTMENTTHREADED);
+ return expCoInitializeEx(lpReserved, COINIT_APARTMENTTHREADED);
+}
+
+static void WINAPI expCoUninitialize(void)
+{
+ dbgprintf("CoUninitialize() called\n");
+}
+
+/* allow static linking */
+HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
+{
+ return expCoInitializeEx(lpReserved, dwCoInit);
+}
+HRESULT WINAPI CoInitialize(LPVOID lpReserved)
+{
+ return expCoInitialize(lpReserved);
+}
+void WINAPI CoUninitialize(void)
+{
+ return expCoUninitialize();
}
static DWORD WINAPI expSetThreadAffinityMask
@@ -5132,6 +5158,8 @@ struct exports exp_ole32[]={
FF(CoCreateFreeThreadedMarshaler,-1)
FF(CoCreateInstance, -1)
FF(CoInitialize, -1)
+ FF(CoInitializeEx, -1)
+ FF(CoUninitialize, -1)
FF(CoTaskMemAlloc, -1)
FF(CoTaskMemFree, -1)
FF(StringFromGUID2, -1)
diff --git a/loader/wine/objbase.h b/loader/wine/objbase.h
new file mode 100644
index 0000000000..df092c094d
--- /dev/null
+++ b/loader/wine/objbase.h
@@ -0,0 +1,19 @@
+#ifndef WINE_OBJBASE_H
+#define WINE_OBJBASE_H
+
+#ifndef STDCALL
+#define STDCALL __attribute__((__stdcall__))
+#endif
+
+/* from objbase.h needed for ve_vfw.c */
+typedef enum tagCOINIT {
+ COINIT_APARTMENTTHREADED = 0x2,
+ COINIT_MULTITHREADED = 0x0,
+ COINIT_DISABLE_OLE1DDE = 0x4,
+ COINIT_SPEED_OVER_MEMORY = 0x8
+} COINIT;
+
+HRESULT STDCALL CoInitialize(LPVOID pvReserved);
+HRESULT STDCALL CoInitializeEx(LPVOID pvReserved, DWORD dwCoinit);
+void STDCALL CoUninitialize(void);
+#endif