Browse Source

Native AVI Player: WP8 compatibility fix

Lou Yihua 7 years ago
parent
commit
bbab82e612
2 changed files with 21 additions and 4 deletions
  1. 17 0
      winrt/SDLPal.Common/native_avi.cpp
  2. 4 4
      winrt/SDLPal.WindowsPhone/SDLPal.vcxproj

+ 17 - 0
winrt/SDLPal.Common/native_avi.cpp

@@ -42,8 +42,25 @@ using namespace Microsoft::WRL;
 class bstr_t
 {
 public:
+#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
+	struct _bstr
+	{
+		DWORD   length;
+		OLECHAR string[2];
+	};
+	bstr_t(const wchar_t* s) : m_bstr(nullptr)
+	{
+		DWORD length = (DWORD)wcslen(s);
+		auto p = (_bstr*)CoTaskMemAlloc(length * sizeof(wchar_t) + sizeof(_bstr));
+		wcsncpy(m_bstr = p->string, s, length);
+		p->string[length] = p->string[length + 1] = L'\0';
+		p->length = length * sizeof(wchar_t);
+	}
+	~bstr_t() { CoTaskMemFree((LPBYTE)m_bstr - offsetof(_bstr, string)); }
+#else
 	bstr_t(const wchar_t* s) : m_bstr(SysAllocString(s)) {}
 	~bstr_t() { SysFreeString(m_bstr); }
+#endif
 
 	operator BSTR() { return m_bstr; }
 

+ 4 - 4
winrt/SDLPal.WindowsPhone/SDLPal.vcxproj

@@ -101,7 +101,7 @@
       <AdditionalIncludeDirectories>..\;..\..\;..\SDLPal.Common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>OleAut32.lib;D3D11.lib;Mf.lib;Mfuuid.lib;Mfplat.lib;dxgi.lib;dxguid.lib;sdlpal.core.lib;sdlpal.common.lib;vccorlibd.lib;msvcrtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>D3D11.lib;Mf.lib;Mfuuid.lib;Mfplat.lib;dxgi.lib;dxguid.lib;sdlpal.core.lib;sdlpal.common.lib;vccorlibd.lib;msvcrtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>vccorlibd.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
       <AdditionalLibraryDirectories>$(OutDir)../SDLPal.Common.WindowsPhone;$(OutDir)../SDLPal.Core.WindowsPhone</AdditionalLibraryDirectories>
     </Link>
@@ -114,7 +114,7 @@
       <AdditionalIncludeDirectories>..\;..\..\;..\SDLPal.Common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>OleAut32.lib;D3D11.lib;Mf.lib;Mfuuid.lib;Mfplat.lib;dxgi.lib;dxguid.lib;sdlpal.core.lib;sdlpal.common.lib;vccorlib.lib;msvcrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>D3D11.lib;Mf.lib;Mfuuid.lib;Mfplat.lib;dxgi.lib;dxguid.lib;sdlpal.core.lib;sdlpal.common.lib;vccorlib.lib;msvcrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>vccorlib.lib;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
       <AdditionalLibraryDirectories>$(OutDir)../SDLPal.Common.WindowsPhone;$(OutDir)../SDLPal.Core.WindowsPhone</AdditionalLibraryDirectories>
     </Link>
@@ -127,7 +127,7 @@
       <AdditionalIncludeDirectories>..\;..\..\;..\SDLPal.Common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>OleAut32.lib;D3D11.lib;Mf.lib;Mfuuid.lib;Mfplat.lib;dxgi.lib;dxguid.lib;sdlpal.core.lib;sdlpal.common.lib;vccorlibd.lib;msvcrtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>D3D11.lib;Mf.lib;Mfuuid.lib;Mfplat.lib;dxgi.lib;dxguid.lib;sdlpal.core.lib;sdlpal.common.lib;vccorlibd.lib;msvcrtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>vccorlibd.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
       <AdditionalLibraryDirectories>$(OutDir)../SDLPal.Common.WindowsPhone;$(OutDir)../SDLPal.Core.WindowsPhone</AdditionalLibraryDirectories>
     </Link>
@@ -140,7 +140,7 @@
       <AdditionalIncludeDirectories>..\;..\..\;..\SDLPal.Common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>OleAut32.lib;D3D11.lib;Mf.lib;Mfuuid.lib;Mfplat.lib;dxgi.lib;dxguid.lib;sdlpal.core.lib;sdlpal.common.lib;vccorlib.lib;msvcrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>D3D11.lib;Mf.lib;Mfuuid.lib;Mfplat.lib;dxgi.lib;dxguid.lib;sdlpal.core.lib;sdlpal.common.lib;vccorlib.lib;msvcrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <IgnoreSpecificDefaultLibraries>vccorlib.lib;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
       <AdditionalLibraryDirectories>$(OutDir)../SDLPal.Common.WindowsPhone;$(OutDir)../SDLPal.Core.WindowsPhone</AdditionalLibraryDirectories>
     </Link>