Wine-devel
Threads by month
- ----- 2026 -----
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
December 2017
- 60 participants
- 368 discussions
06 Dec '17
Signed-off-by: Vijay Kiran Kamuju <infyquest(a)gmail.com>
---
dlls/d3dx9_24/d3dx9_24.spec | 2 +-
dlls/d3dx9_25/d3dx9_25.spec | 2 +-
dlls/d3dx9_26/d3dx9_26.spec | 2 +-
dlls/d3dx9_27/d3dx9_27.spec | 2 +-
dlls/d3dx9_28/d3dx9_28.spec | 2 +-
dlls/d3dx9_29/d3dx9_29.spec | 2 +-
dlls/d3dx9_30/d3dx9_30.spec | 2 +-
dlls/d3dx9_31/d3dx9_31.spec | 2 +-
dlls/d3dx9_32/d3dx9_32.spec | 2 +-
dlls/d3dx9_33/d3dx9_33.spec | 2 +-
dlls/d3dx9_34/d3dx9_34.spec | 2 +-
dlls/d3dx9_35/d3dx9_35.spec | 2 +-
dlls/d3dx9_36/d3dx9_36.spec | 2 +-
dlls/d3dx9_36/mesh.c | 13 +++++++++++++
dlls/d3dx9_37/d3dx9_37.spec | 2 +-
dlls/d3dx9_38/d3dx9_38.spec | 2 +-
dlls/d3dx9_39/d3dx9_39.spec | 2 +-
dlls/d3dx9_40/d3dx9_40.spec | 2 +-
dlls/d3dx9_41/d3dx9_41.spec | 2 +-
dlls/d3dx9_42/d3dx9_42.spec | 2 +-
dlls/d3dx9_43/d3dx9_43.spec | 2 +-
21 files changed, 33 insertions(+), 20 deletions(-)
diff --git a/dlls/d3dx9_24/d3dx9_24.spec b/dlls/d3dx9_24/d3dx9_24.spec
index 0ca8777efe..98aafabf10 100644
--- a/dlls/d3dx9_24/d3dx9_24.spec
+++ b/dlls/d3dx9_24/d3dx9_24.spec
@@ -21,7 +21,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_25/d3dx9_25.spec b/dlls/d3dx9_25/d3dx9_25.spec
index a5449810a4..dc3b7c9780 100644
--- a/dlls/d3dx9_25/d3dx9_25.spec
+++ b/dlls/d3dx9_25/d3dx9_25.spec
@@ -21,7 +21,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_26/d3dx9_26.spec b/dlls/d3dx9_26/d3dx9_26.spec
index 9e1200442f..d37ee77b3c 100644
--- a/dlls/d3dx9_26/d3dx9_26.spec
+++ b/dlls/d3dx9_26/d3dx9_26.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_27/d3dx9_27.spec b/dlls/d3dx9_27/d3dx9_27.spec
index 9e1200442f..d37ee77b3c 100644
--- a/dlls/d3dx9_27/d3dx9_27.spec
+++ b/dlls/d3dx9_27/d3dx9_27.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_28/d3dx9_28.spec b/dlls/d3dx9_28/d3dx9_28.spec
index b316a23baf..ee0192e6c7 100644
--- a/dlls/d3dx9_28/d3dx9_28.spec
+++ b/dlls/d3dx9_28/d3dx9_28.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_29/d3dx9_29.spec b/dlls/d3dx9_29/d3dx9_29.spec
index b316a23baf..ee0192e6c7 100644
--- a/dlls/d3dx9_29/d3dx9_29.spec
+++ b/dlls/d3dx9_29/d3dx9_29.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_30/d3dx9_30.spec b/dlls/d3dx9_30/d3dx9_30.spec
index e00fa54786..cf08ae1fb3 100644
--- a/dlls/d3dx9_30/d3dx9_30.spec
+++ b/dlls/d3dx9_30/d3dx9_30.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_31/d3dx9_31.spec b/dlls/d3dx9_31/d3dx9_31.spec
index d308939ef6..6db192eab2 100644
--- a/dlls/d3dx9_31/d3dx9_31.spec
+++ b/dlls/d3dx9_31/d3dx9_31.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_32/d3dx9_32.spec b/dlls/d3dx9_32/d3dx9_32.spec
index c2292dff39..ea9b99db31 100644
--- a/dlls/d3dx9_32/d3dx9_32.spec
+++ b/dlls/d3dx9_32/d3dx9_32.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_33/d3dx9_33.spec b/dlls/d3dx9_33/d3dx9_33.spec
index c2292dff39..ea9b99db31 100644
--- a/dlls/d3dx9_33/d3dx9_33.spec
+++ b/dlls/d3dx9_33/d3dx9_33.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_34/d3dx9_34.spec b/dlls/d3dx9_34/d3dx9_34.spec
index c2292dff39..ea9b99db31 100644
--- a/dlls/d3dx9_34/d3dx9_34.spec
+++ b/dlls/d3dx9_34/d3dx9_34.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_35/d3dx9_35.spec b/dlls/d3dx9_35/d3dx9_35.spec
index c2292dff39..ea9b99db31 100644
--- a/dlls/d3dx9_35/d3dx9_35.spec
+++ b/dlls/d3dx9_35/d3dx9_35.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
index 0fdf4e135e..1bad3e77ec 100644
--- a/dlls/d3dx9_36/d3dx9_36.spec
+++ b/dlls/d3dx9_36/d3dx9_36.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
index 6294ce624f..09a928fcb6 100644
--- a/dlls/d3dx9_36/mesh.c
+++ b/dlls/d3dx9_36/mesh.c
@@ -7507,6 +7507,19 @@ done:
return hr;
}
+/*************************************************************************
+ * D3DXComputeTangentFrame (D3DX9_36.@)
+ */
+HRESULT WINAPI D3DXComputeTangentFrame(ID3DXMesh *mesh, DWORD options)
+{
+ TRACE("mesh %p, options %#x\n", mesh, options);
+
+ return D3DXComputeTangentFrameEx(mesh, D3DDECLUSAGE_TEXCOORD, 0,
+ D3DDECLUSAGE_BINORMAL, 0, D3DDECLUSAGE_TANGENT, 0, D3DDECLUSAGE_NORMAL, 0,
+ options | D3DXTANGENT_GENERATE_IN_PLACE,
+ NULL, 0.01f, 0.25f, 0.01f, NULL, NULL);
+}
+
/*************************************************************************
* D3DXComputeNormals (D3DX9_36.@)
*/
diff --git a/dlls/d3dx9_37/d3dx9_37.spec b/dlls/d3dx9_37/d3dx9_37.spec
index 0fdf4e135e..1bad3e77ec 100644
--- a/dlls/d3dx9_37/d3dx9_37.spec
+++ b/dlls/d3dx9_37/d3dx9_37.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_38/d3dx9_38.spec b/dlls/d3dx9_38/d3dx9_38.spec
index 0fdf4e135e..1bad3e77ec 100644
--- a/dlls/d3dx9_38/d3dx9_38.spec
+++ b/dlls/d3dx9_38/d3dx9_38.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_39/d3dx9_39.spec b/dlls/d3dx9_39/d3dx9_39.spec
index 0fdf4e135e..1bad3e77ec 100644
--- a/dlls/d3dx9_39/d3dx9_39.spec
+++ b/dlls/d3dx9_39/d3dx9_39.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_40/d3dx9_40.spec b/dlls/d3dx9_40/d3dx9_40.spec
index 0fdf4e135e..1bad3e77ec 100644
--- a/dlls/d3dx9_40/d3dx9_40.spec
+++ b/dlls/d3dx9_40/d3dx9_40.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_41/d3dx9_41.spec b/dlls/d3dx9_41/d3dx9_41.spec
index 0fdf4e135e..1bad3e77ec 100644
--- a/dlls/d3dx9_41/d3dx9_41.spec
+++ b/dlls/d3dx9_41/d3dx9_41.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_42/d3dx9_42.spec b/dlls/d3dx9_42/d3dx9_42.spec
index 2f2ac5fd61..8c5ab4e18a 100644
--- a/dlls/d3dx9_42/d3dx9_42.spec
+++ b/dlls/d3dx9_42/d3dx9_42.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
diff --git a/dlls/d3dx9_43/d3dx9_43.spec b/dlls/d3dx9_43/d3dx9_43.spec
index 2f2ac5fd61..8c5ab4e18a 100644
--- a/dlls/d3dx9_43/d3dx9_43.spec
+++ b/dlls/d3dx9_43/d3dx9_43.spec
@@ -25,7 +25,7 @@
@ stub D3DXComputeNormalMap(ptr ptr ptr long long float)
@ stdcall D3DXComputeNormals(ptr ptr)
@ stub D3DXComputeTangent(ptr long long long long ptr)
-@ stub D3DXComputeTangentFrame(ptr long)
+@ stdcall D3DXComputeTangentFrame(ptr long)
@ stdcall D3DXComputeTangentFrameEx(ptr long long long long long long long long long ptr float float float ptr ptr)
@ stub D3DXConcatenateMeshes(ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3DXConvertMeshSubsetToSingleStrip(ptr long long ptr ptr)
--
2.15.1
2
3
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
It's already used directly in msg.c.
dlls/user32/tests/edit.c | 12 +++---------
dlls/user32/tests/menu.c | 9 ++-------
2 files changed, 5 insertions(+), 16 deletions(-)
diff --git a/dlls/user32/tests/edit.c b/dlls/user32/tests/edit.c
index 9372c484af..79c0010e4e 100644
--- a/dlls/user32/tests/edit.c
+++ b/dlls/user32/tests/edit.c
@@ -38,14 +38,12 @@ struct edit_notify {
static struct edit_notify notifications;
-static BOOL (WINAPI *pEndMenu) (void);
static BOOL (WINAPI *pGetMenuBarInfo)(HWND,LONG,LONG,PMENUBARINFO);
static void init_function_pointers(void)
{
HMODULE hdll = GetModuleHandleA("user32");
- pEndMenu = (void*)GetProcAddress(hdll, "EndMenu");
pGetMenuBarInfo = (void*)GetProcAddress(hdll, "GetMenuBarInfo");
}
@@ -2294,7 +2292,7 @@ static LRESULT CALLBACK edit4_wnd_procA(HWND hWnd, UINT msg, WPARAM wParam, LPAR
if (hWnd != (HWND)lParam)
{
got_wm_capturechanged = TRUE;
- pEndMenu();
+ EndMenu();
}
break;
}
@@ -2337,7 +2335,7 @@ static LRESULT CALLBACK edit_proc_proxy(HWND hWnd, UINT msg, WPARAM wParam, LPAR
ok(!mbi.fFocused, "mbi.fFocused = TRUE\n");
}
- pEndMenu();
+ EndMenu();
break;
}
}
@@ -2985,11 +2983,7 @@ START_TEST(edit)
test_child_edit_wmkeydown();
test_fontsize();
test_dialogmode();
- if (pEndMenu)
- test_contextmenu();
- else
- win_skip("EndMenu is not available\n");
-
+ test_contextmenu();
test_EM_GETHANDLE();
test_paste();
diff --git a/dlls/user32/tests/menu.c b/dlls/user32/tests/menu.c
index 03454fedfd..f99cd946b4 100644
--- a/dlls/user32/tests/menu.c
+++ b/dlls/user32/tests/menu.c
@@ -41,7 +41,6 @@ static BOOL (WINAPI *pGetMenuInfo)(HMENU,LPCMENUINFO);
static BOOL (WINAPI *pGetMenuBarInfo)(HWND,LONG,LONG,PMENUBARINFO);
static UINT (WINAPI *pSendInput)(UINT, INPUT*, size_t);
static BOOL (WINAPI *pSetMenuInfo)(HMENU,LPCMENUINFO);
-static BOOL (WINAPI *pEndMenu) (void);
static void init_function_pointers(void)
{
@@ -56,7 +55,6 @@ static void init_function_pointers(void)
GET_PROC(GetMenuBarInfo)
GET_PROC(SendInput)
GET_PROC(SetMenuInfo)
- GET_PROC(EndMenu)
#undef GET_PROC
}
@@ -3518,7 +3516,7 @@ static LRESULT WINAPI menu_cancelmode_wnd_proc(HWND hwnd, UINT msg,
PostMessageA( hwnd, WM_MOUSEMOVE, 0, 0);
return SendMessageA( g_hwndtosend, WM_CANCELMODE, 0, 0);
}
- pEndMenu();
+ EndMenu();
return TRUE;
}
}
@@ -3531,10 +3529,7 @@ static void test_menu_cancelmode(void)
HWND hwnd, hwndchild;
HMENU menu, menubar;
MSG msg;
- if( !pEndMenu) { /* win95 */
- win_skip( "EndMenu is not available\n");
- return;
- }
+
hwnd = CreateWindowExA( 0, (LPCSTR)MAKEINTATOM(atomMenuCheckClass), NULL,
WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 200, 200,
NULL, NULL, NULL, NULL);
--
2.15.0
1
0
In D3D10+ all clip distances declared in a shader are always enabled.
In other words, enablement of clip distances is a property of a shader.
Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com>
---
>From wined3d API standpoint, the RS_CLIPPLANEENABLE state is ignored
when SM4+ shaders are active. We shouldn't touch the RS_CLIPPLANEENABLE
state when SM4+ shaders are in use.
Fixes https://bugs.winehq.org/show_bug.cgi?id=43932
---
dlls/wined3d/glsl_shader.c | 63 ++++++++++++++++++++++++++++++++++--------
dlls/wined3d/shader.c | 36 +++++++++++++++++++++++-
dlls/wined3d/wined3d_private.h | 43 ++++++++++++++--------------
3 files changed, 109 insertions(+), 33 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 5d08c00175eb..b89b7aa3d53c 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -241,7 +241,10 @@ struct glsl_shader_prog_link
struct glsl_cs_program cs;
GLuint id;
DWORD constant_update_mask;
- UINT constant_version;
+ unsigned int constant_version;
+ DWORD shader_controlled_clip_distances : 1;
+ DWORD clip_distance_mask : 8; /* MAX_CLIP_DISTANCES, 8 */
+ DWORD padding : 23;
};
struct glsl_program_key
@@ -6923,6 +6926,26 @@ static void shader_glsl_setup_sm4_shader_output(struct shader_glsl_priv *priv,
}
}
+static void shader_glsl_generate_clip_or_cull_distances(struct wined3d_string_buffer *buffer,
+ const struct wined3d_shader_signature_element *element, DWORD clip_or_cull_distance_mask)
+{
+ unsigned int i, clip_or_cull_index;
+ char reg_mask[6];
+
+ /* Assign consecutive indices starting from 0. */
+ clip_or_cull_index = element->semantic_idx ? wined3d_popcount(clip_or_cull_distance_mask & 0xf) : 0;
+ for (i = 0; i < 4; ++i)
+ {
+ if (!(element->mask & (WINED3DSP_WRITEMASK_0 << i)))
+ continue;
+
+ shader_glsl_write_mask_to_str(WINED3DSP_WRITEMASK_0 << i, reg_mask);
+ shader_addline(buffer, "gl_ClipDistance[%u] = outputs[%u]%s;\n",
+ clip_or_cull_index, element->register_idx, reg_mask);
+ ++clip_or_cull_index;
+ }
+}
+
static void shader_glsl_setup_sm3_rasterizer_input(struct shader_glsl_priv *priv,
const struct wined3d_gl_info *gl_info, const DWORD *map,
const struct wined3d_shader_signature *input_signature,
@@ -6932,7 +6955,7 @@ static void shader_glsl_setup_sm3_rasterizer_input(struct shader_glsl_priv *priv
{
struct wined3d_string_buffer *buffer = &priv->shader_buffer;
const char *semantic_name;
- UINT semantic_idx;
+ unsigned int semantic_idx;
char reg_mask[6];
unsigned int i;
@@ -6966,6 +6989,10 @@ static void shader_glsl_setup_sm3_rasterizer_input(struct shader_glsl_priv *priv
shader_addline(buffer, "gl_Layer = floatBitsToInt(outputs[%u])%s;\n",
output->register_idx, reg_mask);
}
+ else if (output->sysval_semantic == WINED3D_SV_CLIP_DISTANCE)
+ {
+ shader_glsl_generate_clip_or_cull_distances(buffer, output, reg_maps_out->clip_distance_mask);
+ }
else if (output->sysval_semantic)
{
FIXME("Unhandled sysval semantic %#x.\n", output->sysval_semantic);
@@ -9852,6 +9879,7 @@ static HRESULT shader_glsl_compile_compute_shader(struct shader_glsl_priv *priv,
entry->ps.id = 0;
entry->cs.id = shader_id;
entry->constant_version = 0;
+ entry->shader_controlled_clip_distances = 0;
entry->ps.np2_fixup_info = NULL;
add_glsl_program_entry(priv, entry);
@@ -9926,11 +9954,12 @@ static void set_glsl_compute_shader_program(const struct wined3d_context *contex
static void set_glsl_shader_program(const struct wined3d_context *context, const struct wined3d_state *state,
struct shader_glsl_priv *priv, struct glsl_context_data *ctx_data)
{
- const struct wined3d_gl_info *gl_info = context->gl_info;
const struct wined3d_d3d_info *d3d_info = context->d3d_info;
+ const struct wined3d_gl_info *gl_info = context->gl_info;
+ const struct wined3d_shader *pre_rasterization_shader;
const struct ps_np2fixup_info *np2fixup_info = NULL;
- struct glsl_shader_prog_link *entry = NULL;
struct wined3d_shader *hshader, *dshader, *gshader;
+ struct glsl_shader_prog_link *entry = NULL;
struct wined3d_shader *vshader = NULL;
struct wined3d_shader *pshader = NULL;
GLuint reorder_shader_id = 0;
@@ -10068,6 +10097,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
entry->ps.id = ps_id;
entry->cs.id = 0;
entry->constant_version = 0;
+ entry->shader_controlled_clip_distances = 0;
entry->ps.np2_fixup_info = np2fixup_info;
/* Add the hash table entry */
add_glsl_program_entry(priv, entry);
@@ -10194,7 +10224,15 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
shader_glsl_init_gs_uniform_locations(gl_info, priv, program_id, &entry->gs);
shader_glsl_init_ps_uniform_locations(gl_info, priv, program_id, &entry->ps,
pshader ? pshader->limits->constant_float : 0);
- checkGLcall("Find glsl program uniform locations");
+ checkGLcall("find glsl program uniform locations");
+
+ pre_rasterization_shader = gshader ? gshader : dshader ? dshader : vshader;
+ if (pre_rasterization_shader && pre_rasterization_shader->reg_maps.shader_version.major >= 4)
+ {
+ unsigned int clip_distance_count = wined3d_popcount(pre_rasterization_shader->reg_maps.clip_distance_mask);
+ entry->shader_controlled_clip_distances = 1;
+ entry->clip_distance_mask = (1u << clip_distance_count) - 1;
+ }
if (needs_legacy_glsl_syntax(gl_info))
{
@@ -10350,6 +10388,7 @@ static void shader_glsl_select(void *shader_priv, struct wined3d_context *contex
struct glsl_context_data *ctx_data = context->shader_backend_data;
const struct wined3d_gl_info *gl_info = context->gl_info;
struct shader_glsl_priv *priv = shader_priv;
+ struct glsl_shader_prog_link *glsl_program;
GLenum current_vertex_color_clamp;
GLuint program_id, prev_id;
@@ -10357,13 +10396,15 @@ static void shader_glsl_select(void *shader_priv, struct wined3d_context *contex
priv->fragment_pipe->enable_extension(gl_info, !use_ps(state));
prev_id = ctx_data->glsl_program ? ctx_data->glsl_program->id : 0;
-
set_glsl_shader_program(context, state, priv, ctx_data);
+ glsl_program = ctx_data->glsl_program;
- if (ctx_data->glsl_program)
+ if (glsl_program)
{
- program_id = ctx_data->glsl_program->id;
- current_vertex_color_clamp = ctx_data->glsl_program->vs.vertex_color_clamp;
+ program_id = glsl_program->id;
+ current_vertex_color_clamp = glsl_program->vs.vertex_color_clamp;
+ if (glsl_program->shader_controlled_clip_distances)
+ context_enable_clip_distances(context, glsl_program->clip_distance_mask);
}
else
{
@@ -10392,8 +10433,8 @@ static void shader_glsl_select(void *shader_priv, struct wined3d_context *contex
GL_EXTCALL(glUseProgram(program_id));
checkGLcall("glUseProgram");
- if (program_id)
- context->constant_update_mask |= ctx_data->glsl_program->constant_update_mask;
+ if (glsl_program)
+ context->constant_update_mask |= glsl_program->constant_update_mask;
}
context->shader_update_mask |= (1u << WINED3D_SHADER_TYPE_COMPUTE);
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index c4eed76d78f0..7d59f8b9a042 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -952,6 +952,31 @@ static HRESULT shader_record_shader_phase(struct wined3d_shader *shader,
return WINED3D_OK;
}
+static HRESULT shader_calculate_clip_or_cull_distance_mask(
+ const struct wined3d_shader_signature_element *e, DWORD *mask)
+{
+ unsigned int i;
+
+ *mask = 0;
+
+ /* Cull and clip distances are packed in 4 component registers. 0 and 1 are
+ * the only allowed semantic indices.
+ */
+ if (e->semantic_idx >= MAX_CLIP_DISTANCES / 4)
+ {
+ WARN("Invalid clip/cull distance index %u.\n", e->semantic_idx);
+ return WINED3DERR_INVALIDCALL;
+ }
+
+ for (i = 0; i < 4; ++i)
+ {
+ if (e->mask & (WINED3DSP_WRITEMASK_0 << i))
+ *mask |= 1u << (4 * e->semantic_idx + i);
+ }
+
+ return WINED3D_OK;
+}
+
static void wined3d_insert_interpolation_mode(DWORD *packed_interpolation_mode,
unsigned int register_idx, enum wined3d_shader_interpolation_mode mode)
{
@@ -1754,7 +1779,16 @@ static HRESULT shader_get_registers_used(struct wined3d_shader *shader, const st
{
for (i = 0; i < output_signature->element_count; ++i)
{
- reg_maps->output_registers |= 1u << output_signature->elements[i].register_idx;
+ const struct wined3d_shader_signature_element *e = &output_signature->elements[i];
+ DWORD mask;
+
+ reg_maps->output_registers |= 1u << e->register_idx;
+ if (e->sysval_semantic == WINED3D_SV_CLIP_DISTANCE)
+ {
+ if (FAILED(hr = shader_calculate_clip_or_cull_distance_mask(e, &mask)))
+ return hr;
+ reg_maps->clip_distance_mask |= mask;
+ }
}
}
else if (reg_maps->output_registers)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index da06ba159f79..b8f0b4d194e0 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1006,31 +1006,32 @@ struct wined3d_shader_reg_maps
BYTE bumpmat; /* MAX_TEXTURES, 8 */
BYTE luminanceparams; /* MAX_TEXTURES, 8 */
struct wined3d_shader_resource_info uav_resource_info[MAX_UNORDERED_ACCESS_VIEWS];
- DWORD uav_read_mask; /* MAX_UNORDERED_ACCESS_VIEWS, 8 */
- DWORD uav_counter_mask; /* MAX_UNORDERED_ACCESS_VIEWS, 8 */
-
- WORD usesnrm : 1;
- WORD vpos : 1;
- WORD usesdsx : 1;
- WORD usesdsy : 1;
- WORD usestexldd : 1;
- WORD usesmova : 1;
- WORD usesfacing : 1;
- WORD usesrelconstF : 1;
- WORD fog : 1;
- WORD usestexldl : 1;
- WORD usesifc : 1;
- WORD usescall : 1;
- WORD usespow : 1;
- WORD point_size : 1;
- WORD vocp : 1;
- WORD padding : 1;
+ DWORD uav_read_mask : 8; /* MAX_UNORDERED_ACCESS_VIEWS, 8 */
+ DWORD uav_counter_mask : 8; /* MAX_UNORDERED_ACCESS_VIEWS, 8 */
+
+ DWORD clip_distance_mask : 8; /* MAX_CLIP_DISTANCES, 8 */
+ DWORD usesnrm : 1;
+ DWORD vpos : 1;
+ DWORD usesdsx : 1;
+ DWORD usesdsy : 1;
+ DWORD usestexldd : 1;
+ DWORD usesmova : 1;
+ DWORD usesfacing : 1;
+ DWORD usesrelconstF : 1;
+ DWORD fog : 1;
+ DWORD usestexldl : 1;
+ DWORD usesifc : 1;
+ DWORD usescall : 1;
+ DWORD usespow : 1;
+ DWORD point_size : 1;
+ DWORD vocp : 1;
+ DWORD padding : 25;
DWORD rt_mask; /* Used render targets, 32 max. */
/* Whether or not loops are used in this shader, and nesting depth */
- unsigned loop_depth;
- UINT min_rel_offset, max_rel_offset;
+ unsigned int loop_depth;
+ unsigned int min_rel_offset, max_rel_offset;
struct wined3d_shader_tgsm *tgsm;
SIZE_T tgsm_capacity;
--
2.13.6
5
16
05 Dec '17
Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com>
---
v3: Always SetLastError before checking GLE return.
dlls/kernel32/tests/file.c | 58 +++++++++++++++++++++++++++++++++++++++-------
dlls/ntdll/file.c | 2 +-
2 files changed, 51 insertions(+), 9 deletions(-)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 0b8cef23f8..a8d229c887 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -4353,7 +4353,8 @@ static void test_WriteFileGather(void)
FILE_SEGMENT_ELEMENT fse[2];
OVERLAPPED ovl, *povl = NULL;
SYSTEM_INFO si;
- LPVOID buf = NULL;
+ LPVOID wbuf = NULL, rbuf1;
+ BOOL br;
ret = GetTempPathA( MAX_PATH, temp_path );
ok( ret != 0, "GetTempPathA error %d\n", GetLastError() );
@@ -4371,12 +4372,17 @@ static void test_WriteFileGather(void)
ok( hiocp2 != 0, "CreateIoCompletionPort failed err %u\n", GetLastError() );
GetSystemInfo( &si );
- buf = VirtualAlloc( NULL, si.dwPageSize, MEM_COMMIT, PAGE_READWRITE );
- ok( buf != NULL, "VirtualAlloc failed err %u\n", GetLastError() );
+ wbuf = VirtualAlloc( NULL, si.dwPageSize, MEM_COMMIT, PAGE_READWRITE );
+ ok( wbuf != NULL, "VirtualAlloc failed err %u\n", GetLastError() );
+
+ rbuf1 = VirtualAlloc( NULL, si.dwPageSize, MEM_COMMIT, PAGE_READWRITE );
+ ok( rbuf1 != NULL, "VirtualAlloc failed err %u\n", GetLastError() );
memset( &ovl, 0, sizeof(ovl) );
memset( fse, 0, sizeof(fse) );
- fse[0].Buffer = buf;
+ memset( wbuf, 0x42, si.dwPageSize );
+ fse[0].Buffer = wbuf;
+ SetLastError(0xdeadbeef);
if (!WriteFileGather( hfile, fse, si.dwPageSize, NULL, &ovl ))
ok( GetLastError() == ERROR_IO_PENDING, "WriteFileGather failed err %u\n", GetLastError() );
@@ -4384,20 +4390,56 @@ static void test_WriteFileGather(void)
ok( ret, "GetQueuedCompletionStatus failed err %u\n", GetLastError());
ok( povl == &ovl, "wrong ovl %p\n", povl );
+ /* read exact size */
memset( &ovl, 0, sizeof(ovl) );
memset( fse, 0, sizeof(fse) );
- fse[0].Buffer = buf;
- if (!ReadFileScatter( hfile, fse, si.dwPageSize, NULL, &ovl ))
- ok( GetLastError() == ERROR_IO_PENDING, "ReadFileScatter failed err %u\n", GetLastError() );
+ fse[0].Buffer = rbuf1;
+ memset( rbuf1, 0, si.dwPageSize );
+ SetLastError(0xdeadbeef);
+ br = ReadFileScatter( hfile, fse, si.dwPageSize, NULL, &ovl );
+ ok( br == FALSE, "ReadFileScatter should be asynchronous\n" );
+ ok( GetLastError() == ERROR_IO_PENDING, "ReadFileScatter failed err %u\n", GetLastError() );
ret = GetQueuedCompletionStatus( hiocp2, &size, &key, &povl, 1000 );
ok( ret, "GetQueuedCompletionStatus failed err %u\n", GetLastError());
ok( povl == &ovl, "wrong ovl %p\n", povl );
+ ok( memcmp( rbuf1, wbuf, si.dwPageSize ) == 0,
+ "data was not read into buffer\n" );
+
+ /* start read at EOF */
+ memset( &ovl, 0, sizeof(ovl) );
+ S(U(ovl)).OffsetHigh = 0;
+ S(U(ovl)).Offset = si.dwPageSize;
+ memset( fse, 0, sizeof(fse) );
+ fse[0].Buffer = rbuf1;
+ SetLastError(0xdeadbeef);
+ br = ReadFileScatter( hfile, fse, si.dwPageSize, NULL, &ovl );
+ ok( br == FALSE, "ReadFileScatter should have failed\n" );
+ ok( GetLastError() == ERROR_HANDLE_EOF ||
+ GetLastError() == ERROR_IO_PENDING, "ReadFileScatter gave wrong error %u\n", GetLastError() );
+ if (GetLastError() == ERROR_IO_PENDING)
+ {
+ SetLastError(0xdeadbeef);
+ ret = GetQueuedCompletionStatus( hiocp2, &size, &key, &povl, 1000 );
+ ok( !ret, "GetQueuedCompletionStatus should have returned failure\n" );
+ ok( GetLastError() == ERROR_HANDLE_EOF, "Got wrong error: %u\n", GetLastError() );
+ ok( povl == &ovl, "wrong ovl %p\n", povl );
+ }
+ else
+ {
+ SetLastError(0xdeadbeef);
+ ret = GetQueuedCompletionStatus( hiocp2, &size, &key, &povl, 100 );
+ ok( !ret, "GetQueuedCompletionStatus failed err %u\n", GetLastError() );
+ ok( GetLastError() == WAIT_TIMEOUT, "GetQueuedCompletionStatus gave wrong error %u\n", GetLastError() );
+ ok( povl == NULL, "wrong ovl %p\n", povl );
+ }
+
CloseHandle( hfile );
CloseHandle( hiocp1 );
CloseHandle( hiocp2 );
- VirtualFree( buf, 0, MEM_RELEASE );
+ VirtualFree( wbuf, 0, MEM_RELEASE );
+ VirtualFree( rbuf1, 0, MEM_RELEASE );
DeleteFileA( filename );
}
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index ca2afa0e89..12b1d0f6c5 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -1105,7 +1105,7 @@ NTSTATUS WINAPI NtReadFileScatter( HANDLE file, HANDLE event, PIO_APC_ROUTINE ap
if (send_completion) NTDLL_AddCompletion( file, cvalue, status, total );
- return status;
+ return STATUS_PENDING;
}
--
2.15.1
2
2
[PATCH 4/4] d2d1: Introduce a registry key to limit the maximum supported factory version.
by Henri Verbeet 05 Dec '17
by Henri Verbeet 05 Dec '17
05 Dec '17
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
dlls/d2d1/Makefile.in | 2 +-
dlls/d2d1/d2d1_private.h | 6 ++++
dlls/d2d1/factory.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 82 insertions(+), 2 deletions(-)
diff --git a/dlls/d2d1/Makefile.in b/dlls/d2d1/Makefile.in
index 51b9627..20d3f26 100644
--- a/dlls/d2d1/Makefile.in
+++ b/dlls/d2d1/Makefile.in
@@ -1,6 +1,6 @@
MODULE = d2d1.dll
IMPORTLIB = d2d1
-IMPORTS = d3d10_1 dxguid uuid gdi32 user32
+IMPORTS = d3d10_1 dxguid uuid gdi32 user32 advapi32
DELAYIMPORTS = dwrite
C_SRCS = \
diff --git a/dlls/d2d1/d2d1_private.h b/dlls/d2d1/d2d1_private.h
index 3b21bc1..f876cbf 100644
--- a/dlls/d2d1/d2d1_private.h
+++ b/dlls/d2d1/d2d1_private.h
@@ -52,6 +52,12 @@ enum d2d_shape_type
D2D_SHAPE_TYPE_COUNT,
};
+struct d2d_settings
+{
+ unsigned int max_version_factory;
+};
+extern struct d2d_settings d2d_settings DECLSPEC_HIDDEN;
+
struct d2d_clip_stack
{
D2D1_RECT_F *stack;
diff --git a/dlls/d2d1/factory.c b/dlls/d2d1/factory.c
index da2b892..f202332 100644
--- a/dlls/d2d1/factory.c
+++ b/dlls/d2d1/factory.c
@@ -22,8 +22,14 @@
#define D2D1_INIT_GUID
#include "d2d1_private.h"
+WINE_DECLARE_DEBUG_CHANNEL(winediag);
WINE_DEFAULT_DEBUG_CHANNEL(d2d);
+struct d2d_settings d2d_settings =
+{
+ ~0u, /* No ID2D1Factory version limit by default. */
+};
+
struct d2d_factory
{
ID2D1Factory1 ID2D1Factory1_iface;
@@ -62,7 +68,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_QueryInterface(ID2D1Factory1 *iface
{
TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
- if (IsEqualGUID(iid, &IID_ID2D1Factory1)
+ if ((IsEqualGUID(iid, &IID_ID2D1Factory1) && d2d_settings.max_version_factory >= 1)
|| IsEqualGUID(iid, &IID_ID2D1Factory)
|| IsEqualGUID(iid, &IID_IUnknown))
{
@@ -537,3 +543,71 @@ void WINAPI D2D1MakeRotateMatrix(float angle, D2D1_POINT_2F center, D2D1_MATRIX_
matrix->_31 = center.x - center.x * cos_theta + center.y * sin_theta;
matrix->_32 = center.y - center.x * sin_theta - center.y * cos_theta;
}
+
+static BOOL get_config_key_dword(HKEY default_key, HKEY application_key, const char *name, DWORD *value)
+{
+ DWORD type, data, size;
+
+ size = sizeof(data);
+ if (application_key && !RegQueryValueExA(application_key,
+ name, 0, &type, (BYTE *)&data, &size) && type == REG_DWORD)
+ goto success;
+
+ size = sizeof(data);
+ if (default_key && !RegQueryValueExA(default_key,
+ name, 0, &type, (BYTE *)&data, &size) && type == REG_DWORD)
+ goto success;
+
+ return FALSE;
+
+success:
+ *value = data;
+ return TRUE;
+}
+
+static void d2d_settings_init(void)
+{
+ HKEY default_key, tmp_key, application_key = NULL;
+ char buffer[MAX_PATH + 10];
+ DWORD len;
+
+ if (RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Direct2D", &default_key))
+ default_key = NULL;
+
+ len = GetModuleFileNameA(0, buffer, MAX_PATH);
+ if (len && len < MAX_PATH)
+ {
+ char *p, *appname = buffer;
+
+ if ((p = strrchr(appname, '/')))
+ appname = p + 1;
+ if ((p = strrchr(appname, '\\')))
+ appname = p + 1;
+ strcat(appname, "\\Direct2D");
+
+ if (!RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\AppDefaults", &tmp_key))
+ {
+ if (RegOpenKeyA(tmp_key, appname, &application_key))
+ application_key = NULL;
+ RegCloseKey(tmp_key);
+ }
+ }
+
+ if (!default_key && !application_key)
+ return;
+
+ if (get_config_key_dword(default_key, application_key, "max_version_factory", &d2d_settings.max_version_factory))
+ ERR_(winediag)("Limiting maximum Direct2D factory version to %#x.\n", d2d_settings.max_version_factory);
+
+ if (application_key)
+ RegCloseKey(application_key);
+ if (default_key)
+ RegCloseKey(default_key);
+}
+
+BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, void *reserved)
+{
+ if (reason == DLL_PROCESS_ATTACH)
+ d2d_settings_init();
+ return TRUE;
+}
--
2.1.4
3
6
Signed-off-by: Lauri Kenttä <lauri.kentta(a)gmail.com>
---
documentation/README.hu | 274 ++++++++++++++++++++++-----------------------
documentation/README.ko | 242 +++++++++++++++++++--------------------
documentation/README.pt | 210 +++++++++++++++++-----------------
documentation/README.pt_br | 166 +++++++++++++--------------
4 files changed, 446 insertions(+), 446 deletions(-)
diff --git a/documentation/README.hu b/documentation/README.hu
index d3fee99401..ca99d9b325 100644
--- a/documentation/README.hu
+++ b/documentation/README.hu
@@ -1,207 +1,207 @@
-1. BEVEZET�S
+1. BEVEZETÉS
-A Wine egy program amivel lehet�s�g ny�lik a Microsoft Windows
-programok futtat�s�ra (bele�rtve a DOS, Windows 3.x �s Win32
-futtathat� �llom�nyokat) Unix alatt. Tartalmaz egy program bet�lt�t,
-ami bet�lt �s futtat egy Microsoft Windows bin�rist, �s egy
-f�ggv�nyk�nyvt�rat (nev�n Winelib), ami implement�lja a Windows
-API h�v�sokat azok Unix, vagy X11 megfelel�inek haszn�lat�val.
-Ez a f�ggv�nyk�nyvt�r haszn�lhat� a Win32 k�d nat�v Unix futtathat�
-�llom�nny� portl�s�hoz.
+A Wine egy program amivel lehetõség nyílik a Microsoft Windows
+programok futtatására (beleértve a DOS, Windows 3.x és Win32
+futtatható állományokat) Unix alatt. Tartalmaz egy program betöltõt,
+ami betölt és futtat egy Microsoft Windows binárist, és egy
+függvénykönyvtárat (nevén Winelib), ami implementálja a Windows
+API hívásokat azok Unix, vagy X11 megfelelõinek használatával.
+Ez a függvénykönyvtár használható a Win32 kód natív Unix futtatható
+állománnyá portlásához.
-A Wine egy szabad szoftver, a GNU LGPL alatt kiadva; n�zze meg a
-LICENSE f�jlt a r�szletek�rt.
+A Wine egy szabad szoftver, a GNU LGPL alatt kiadva; nézze meg a
+LICENSE fájlt a részletekért.
-2. GYORS IND�T�S
+2. GYORS INDÍTÁS
-Ha �n forr�sb�l ford�totta, aj�nlott a Wine telep�t� haszn�lata a
-a Wine leford�t�s�hoz �s telep�t�s�hez. A Wine forr�sk�d sz�l�-
-k�nyvt�r�b�l (ami tartalmazza ezt a f�jlt), futtassa:
+Ha ön forrásból fordította, ajánlott a Wine telepítõ használata a
+a Wine lefordításához és telepítéséhez. A Wine forráskód szülõ-
+könyvtárából (ami tartalmazza ezt a fájlt), futtassa:
./tools/wineinstall
-A programok futtat�sa "wine [opci�k] program". A tov�bbi inform�ci�khoz
-�s a probl�ma felvil�gos�t�shoz olvassa el ennek a f�jlnak a tov�bbi r�sz�t,
-a Wine man oldal�t, �s k�l�n�sen gazdag inform�ci� tal�lhat� itt:
+A programok futtatása "wine [opciók] program". A további információkhoz
+és a probléma felvilágosításhoz olvassa el ennek a fájlnak a további részét,
+a Wine man oldalát, és különösen gazdag információ található itt:
http://www.winehq.org.
-3. K�VETELM�NYEK
+3. KÖVETELMÉNYEK
-A Wine-nak a ford�t�s�hoz �s futtat�s�hoz �nnek sz�ks�ge lesz a k�vetkez�kb�l
+A Wine-nak a fordításához és futtatásához önnek szüksége lesz a következõkbõl
egynek:
- Linux 2.0.36-os, vagy feletti verzi�
- FreeBSD 5.3, vagy k�s�bbi
- Solaris x86 2.5, vagy k�s�bbi
+ Linux 2.0.36-os, vagy feletti verzió
+ FreeBSD 5.3, vagy késõbbi
+ Solaris x86 2.5, vagy késõbbi
NetBSD-current
-Mivel a Wine-nak k�ks�ges kernelszint� fut�si sz�l t�mogat�s a futtat�shoz, csak
-a fent eml�tett oper�ci�s rendszerek t�mogatottak.
-M�s oper�ci�s rendszerek, amik t�mogatj�k a kernel fut�si sz�lakat, t�mogatva
-lesznek a j�v�ben.
-
-Linux inform�ci�:
- Amig a Linux 2.2.x m�k�dik, �s a Linux 2.0.x is m�k�dni fog
- (a r�gebbi 2.0.x verzi�kban fut�si sz�l miatti �sszeoml�sok voltak),
- az a legjobb, ha �nnek a legfrisebb kernele van, mint p�ld�ul a 2.4.x.
-
-FreeBSD inform�ci�:
- Wine-nak le kell fordulnia a FreeBSD 4.x �s FreeBSD 5.x verzi�kon, de a
- FreeBSD 5.3 el�tti verzi�kon �ltal�ban nem fog m�k�dni.
-
- T�bb inform�ci� tal�lhat� a FreeBSD ports f�ban itt:
+Mivel a Wine-nak kükséges kernelszintû futási szál támogatás a futtatáshoz, csak
+a fent említett operációs rendszerek támogatottak.
+Más operációs rendszerek, amik támogatják a kernel futási szálakat, támogatva
+lesznek a jövõben.
+
+Linux információ:
+ Amig a Linux 2.2.x mûködik, és a Linux 2.0.x is mûködni fog
+ (a régebbi 2.0.x verziókban futási szál miatti összeomlások voltak),
+ az a legjobb, ha önnek a legfrisebb kernele van, mint például a 2.4.x.
+
+FreeBSD információ:
+ Wine-nak le kell fordulnia a FreeBSD 4.x és FreeBSD 5.x verziókon, de a
+ FreeBSD 5.3 elõtti verziókon általában nem fog mûködni.
+
+ Több információ található a FreeBSD ports fában itt:
<ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/emulators/wine/>.
-Solaris inform�ci�:
- A Wine ford�t�s�hoz kell a GNU toolchain (gcc, gas, etc.).
- Figyelem : A gas telep�t�se *nemt* biztos�t�k, hogy a gcc fogja is
- haszn�lni. A gcc �jraford�t�sa a gas telep�t�se ut�n, vagy a cc
- szimbolikus linkel�se, �s ld-z�se a gnu tools-hoz sz�ks�ges.
+Solaris információ:
+ A Wine fordításához kell a GNU toolchain (gcc, gas, etc.).
+ Figyelem : A gas telepítése *nemt* biztosíték, hogy a gcc fogja is
+ használni. A gcc újrafordítása a gas telepítése után, vagy a cc
+ szimbolikus linkelése, és ld-zése a gnu tools-hoz szükséges.
-NetBSD inform�ci�:
- ellen�rizze, hogy a USER_LDT, SYSVSHM, SYSVSEM, �s SYSVMSG opci�k be vannak-e
+NetBSD információ:
+ ellenõrizze, hogy a USER_LDT, SYSVSHM, SYSVSEM, és SYSVMSG opciók be vannak-e
kapcsolva a kernelben.
-T�mogatott f�jlrendszerek:
- A Wine fut a legt�bb f�jlrendszeren. Hab�r a Wine nem fog elindulni, ha
- umsdos-t haszn�lunk a /tmp k�nyvt�rban. N�h�ny kompatibilit�si gondot
- is bejelentettek a Samb�n kereszt�l el�rt f�jlok eset�ben. Az NTFS-t
- lehet haszn�lni biztons�gban �r�sv�dett hozz�f�r�ssel, de az NTFS ellen
- sz�l, hogy a Windows programoknak majdnem mindenhova �r�si jog kell.
- NTFS f�jlok eset�n m�soljuk �t �ket egy �rhat� helyre.
+Támogatott fájlrendszerek:
+ A Wine fut a legtöbb fájlrendszeren. Habár a Wine nem fog elindulni, ha
+ umsdos-t használunk a /tmp könyvtárban. Néhány kompatibilitási gondot
+ is bejelentettek a Sambán keresztül elért fájlok esetében. Az NTFS-t
+ lehet használni biztonságban írásvédett hozzáféréssel, de az NTFS ellen
+ szól, hogy a Windows programoknak majdnem mindenhova írási jog kell.
+ NTFS fájlok esetén másoljuk át õket egy írható helyre.
-Alap k�vetelm�nyek:
- �nnek fel kell telep�tenie az X11 fejleszt�i f�jlokat
- (xlib6g-dev n�ven van a Debianban �s XFree86-devel n�ven a Red Hat-ben).
+Alap követelmények:
+ Önnek fel kell telepítenie az X11 fejlesztõi fájlokat
+ (xlib6g-dev néven van a Debianban és XFree86-devel néven a Red Hat-ben).
-Ford�t�si eszk�z k�vetelm�nyek:
- x86 rendszereken gcc >= 2.7.2 sz�ks�ges.
- A 2.7.2.3-n�l r�gebbi verzi�kban probl�m�k lehetnek k�l�nf�le f�jlokkal,
- amik optimaliz�ci�val lettek ford�tva, gyakran a fejl�c f�jlok kezel�s�nek
- probl�m�i miatt. A pgcc jelenelg nem m�k�dik s Wine-sl. A probl�ma oka
+Fordítási eszköz követelmények:
+ x86 rendszereken gcc >= 2.7.2 szükséges.
+ A 2.7.2.3-nál régebbi verziókban problémák lehetnek különféle fájlokkal,
+ amik optimalizációval lettek fordítva, gyakran a fejléc fájlok kezelésének
+ problémái miatt. A pgcc jelenelg nem mûködik s Wine-sl. A probléma oka
ismeretlen.
- Term�szetesen kell a "make" is (legink�bb a GNU make).
+ Természetesen kell a "make" is (leginkább a GNU make).
- Kell m�g a flex 2.5 verzi�, vagy k�s�bbi, �s a bison.
+ Kell még a flex 2.5 verzió, vagy késõbbi, és a bison.
-Opci�n�lis t�mogat�si f�ggv�nyk�nyvt�rak:
- Ha szeretne CUPS nyomtat� t�mogat�st, telep�tse fel a cups �s a cups-devel
+Opciónális támogatási függvénykönyvtárak:
+ Ha szeretne CUPS nyomtató támogatást, telepítse fel a cups és a cups-devel
csomagot.
- Telep�tse fel a libxml2 csomagot, ha szeretn� hogy m�k�dj�n az msxml
- implement�ci�.
+ Telepítse fel a libxml2 csomagot, ha szeretné hogy mûködjön az msxml
+ implementáció.
-4. FORD�T�S
+4. FORDÍTÁS
-Ha �n nem haszn�lja a wineinstall-t, futtassa a k�vetkez� parancsokat s
-Wine ford�t�s�hoz:
+Ha ön nem használja a wineinstall-t, futtassa a következõ parancsokat s
+Wine fordításához:
./configure
make depend
make
-Ez le fogja ford�tani a "wine" programot �s sz�mos f�ggv�nyk�nyvt�rat/bin�rist.
-A "wine" program be fogja t�lteni �s futtatni fogja a Windows futtathat�
-�llom�nyokat.
-A "libwine" f�ggv�nyk�nyvt�r ("Winelib") haszn�lhat� a Windows forr�sk�d Unix
-alatt t�rt�n� ford�t�s�hoz �s linkel�s�hez.
+Ez le fogja fordítani a "wine" programot és számos függvénykönyvtárat/binárist.
+A "wine" program be fogja tölteni és futtatni fogja a Windows futtatható
+állományokat.
+A "libwine" függvénykönyvtár ("Winelib") használható a Windows forráskód Unix
+alatt történõ fordításához és linkeléséhez.
-A ford�t�si konfigur�ci�s opci�k megtekin�t�s�hez n�zze haszn�lja a ./configure --help
+A fordítási konfigurációs opciók megtekinétéséhez nézze használja a ./configure --help
parancsot.
-�j kiad�sra friss�t�skor patch f�jl haszn�lat�val el�sz�r v�ltos a kiad�s legfels�
-k�nyvt�rszintj�re (ahol a README f�jl megtal�lhat�).
-Azut�n haszn�lja a "make clean" parancsot, �s foltozza meg a kiad�st ezzel:
+Új kiadásra frissítéskor patch fájl használatával elõször váltos a kiadás legfelsõ
+könyvtárszintjére (ahol a README fájl megtalálható).
+Azután használja a "make clean" parancsot, és foltozza meg a kiadást ezzel:
- gunzip -c patch-f�jl | patch -p1
+ gunzip -c patch-fájl | patch -p1
-ahol a "patch-f�jl" a jav�t�folt f�jl f�jlneve (valami ilyesmi:
-Wine-yymmdd.diff.gz). �jrafuttathatja a "./configure", �s azut�n
+ahol a "patch-fájl" a javítófolt fájl fájlneve (valami ilyesmi:
+Wine-yymmdd.diff.gz). Újrafuttathatja a "./configure", és azután
a "make depend && make" parancsokat.
-5. TELEP�T�S
+5. TELEPÍTÉS
-Ha a Wine egyszer helyesen lefordult, haszn�lhatja a "make install"
-parancsot; ez telep�teni fogja a wine futtathat� f�jlt, a Wine man
-oldal�t, �s n�h�ny egy�b sz�ks�ges f�jlt.
+Ha a Wine egyszer helyesen lefordult, használhatja a "make install"
+parancsot; ez telepíteni fogja a wine futtatható fájlt, a Wine man
+oldalát, és néhány egyéb szükséges fájlt.
-El�sz�r ne felejtse elt�vol�tani b�rmely el�z� Wine telep�t�st.
-Pr�b�lja ki a "dpkg -r wine", �s az "rpm -e wine", vagy a "make uninstall"
-parancsot telep�t�s el�tt.
+Elõször ne felejtse eltávolítani bármely elõzõ Wine telepítést.
+Próbálja ki a "dpkg -r wine", és az "rpm -e wine", vagy a "make uninstall"
+parancsot telepítés elõtt.
-L�togassa meg a t�mogat�si oldalt itt: http://www.winehq.org/ a konfigur�ci�s
+Látogassa meg a támogatási oldalt itt: http://www.winehq.org/ a konfigurációs
tippekhez.
-F�ggv�nyk�nyvt�r bet�lt�si hib�k eset�n
-(pl. "Error while loading shared libraries: libntdll.so"), ellen�rizze az
-f�ggv�nyk�nyvt�r �tvonalt, hogy benne van-e az /etc/ld.so.conf �s futtassa az
-ldconfig-ot root-k�nt.
+Függvénykönyvtár betöltési hibák esetén
+(pl. "Error while loading shared libraries: libntdll.so"), ellenõrizze az
+függvénykönyvtár útvonalt, hogy benne van-e az /etc/ld.so.conf és futtassa az
+ldconfig-ot root-ként.
-6. PROGRAMOK FUTTAT�SA
+6. PROGRAMOK FUTTATÁSA
-Ha seg�ts�g�l h�vja a Wine-t, megadhatja a teljes �tvonal�t a futtathat�
-�llom�nynak, vagy csak a f�jlnevet.
+Ha segítségül hívja a Wine-t, megadhatja a teljes útvonalát a futtatható
+állománynak, vagy csak a fájlnevet.
-P�ld�ul: a Paszi�nsz ind�t�sa:
+Például: a Pasziánsz indítása:
- wine sol (a konfigf�jlban megadott keres�si �tvonal
- wine sol.exe haszn�lat�val keress�k meg a f�jlt)
+ wine sol (a konfigfájlban megadott keresési útvonal
+ wine sol.exe használatával keressük meg a fájlt)
- wine c:\\windows\\sol.exe (a DOS f�jln�v szintaxis haszn�lat�val)
+ wine c:\\windows\\sol.exe (a DOS fájlnév szintaxis használatával)
- wine /usr/windows/sol.exe (a Unix-os f�jln�v szintaxis haszn�lat�val)
+ wine /usr/windows/sol.exe (a Unix-os fájlnév szintaxis használatával)
- wine sol.exe /param�ter1 -param�ter2 param�ter3
- (program h�v�sa param�terekkel)
+ wine sol.exe /paraméter1 -paraméter2 paraméter3
+ (program hívása paraméterekkel)
-Felh�v�s: a f�jl el�s�i �tja is hozz� lesz adva a path-hez, ha a teljes n�v
+Felhívás: a fájl eléséi útja is hozzá lesz adva a path-hez, ha a teljes név
meg lett adva a parancssorban.
-A Wine m�g nem teljes, �gy n�h�ny program �sszeomlik. Ha helyesen be�ll�tja a
-winedbg-ot a documentation/debugger.sgml-nek megfelel�en, �n be lesz l�ptetve
-egy hibakeres�be, ahol ut�naj�rhat, �s kijav�thatja a probl�m�t.
-A tov�bbi infom�ci�hoz, hogy hogy kell ezt megcsin�lni, k�rem olvassa el a
-documentation/debugging.sgml f�jlt.
-
-Jobb ha biztons�gba helyezi a fontos f�jlokat, miel�tt hozz�f�r�st a Wine-nak,
-vagy haszn�ljon egy speci�lis Wine m�solatot bel�l�k, mert n�h�ny esetben a
-felhaszn�l�k f�jls�r�l�st jeleztek. NE futtassa az Explorer-t, p�ld�ul,
-ha �nnek nincs helyes biztons�gi ment�se, mert n�ha �tnevez/t�nkretesz
-n�h�ny k�nyvt�rat. Nem csak m�s MS alkalmaz�s mint p�ld�ul a Messenger bizton�sgos,
-de valahogy az Explorer futtat�sa is. Ez a bizonyos s�r�l�s (!$!$!$!$.pfr)
-r�szlegesen jav�that� ennek a haszn�lat�val:
+A Wine még nem teljes, így néhány program összeomlik. Ha helyesen beállítja a
+winedbg-ot a documentation/debugger.sgml-nek megfelelõen, ön be lesz léptetve
+egy hibakeresõbe, ahol utánajárhat, és kijavíthatja a problémát.
+A további infomációhoz, hogy hogy kell ezt megcsinálni, kérem olvassa el a
+documentation/debugging.sgml fájlt.
+
+Jobb ha biztonságba helyezi a fontos fájlokat, mielõtt hozzáférést a Wine-nak,
+vagy használjon egy speciális Wine másolatot belõlük, mert néhány esetben a
+felhasználók fájlsérülést jeleztek. NE futtassa az Explorer-t, például,
+ha önnek nincs helyes biztonsági mentése, mert néha átnevez/tönkretesz
+néhány könyvtárat. Nem csak más MS alkalmazás mint példéul a Messenger biztonásgos,
+de valahogy az Explorer futtatása is. Ez a bizonyos sérülés (!$!$!$!$.pfr)
+részlegesen javítható ennek a használatával:
http://home.nexgo.de/andi.mohr/download/decorrupt_explorer
-7. T�BB INFORM�CI� BESZERZ�SE
+7. TÖBB INFORMÁCIÓ BESZERZÉSE
-WWW: A Wine-r�l hatalmas mennyis�g� inform�ci� �rhet� el a WineHQ-n ezen
- a c�men: http://www.winehq.org/ : k�l�nb�z� Wine �tmutat�k,
- alkalmaz�s adatb�zis, �s hibak�vet�s.
- Ez tal�n a legjobb kiindul�si pont.
+WWW: A Wine-ról hatalmas mennyiségû információ érhetõ el a WineHQ-n ezen
+ a címen: http://www.winehq.org/ : különbözõ Wine útmutatók,
+ alkalmazás adatbázis, és hibakövetés.
+ Ez talán a legjobb kiindulási pont.
-GYIK: A Wine GYIK itt tal�lhat�: http://www.winehq.org/FAQ
+GYIK: A Wine GYIK itt található: http://www.winehq.org/FAQ
-Usenet: T�rsaloghat a Wine-hoz kapcsol�d� t�m�kban, �s seg�ts�get k�rhet itt:
+Usenet: Társaloghat a Wine-hoz kapcsolódó témákban, és segítséget kérhet itt:
comp.emulators.ms-windows.wine.
-Hib�k: Wine hibabejelent�s a Bugzilla-n kereszt�l itt: http://bugs.winehq.org
- K�rem hibabejelent�s k�ld�se el�tt ellen�rizze, hogy az �n probl�m�ja
- m�r megtal�lhat�-e az adatb�zisban. K�ldhet hibabejelent�seket a
- comp.emulators.ms-windows.wine c�mre is.
+Hibák: Wine hibabejelentés a Bugzilla-n keresztül itt: http://bugs.winehq.org
+ Kérem hibabejelentés küldése elõtt ellenõrizze, hogy az ön problémája
+ már megtalálható-e az adatbázisban. Küldhet hibabejelentéseket a
+ comp.emulators.ms-windows.wine címre is.
-IRC: Azonnali seg�ts�g el�rhet� a #WineHQ csatorn�n a irc.freenode.net-en.
+IRC: Azonnali segítség elérhetõ a #WineHQ csatornán a irc.freenode.net-en.
-Git: A jelenlegi Wine fejleszt�i fa el�rhet� Git-en kereszt�l.
- L�togasson el ide a tov�bbi inform�ci�hoz: http://www.winehq.org/git
+Git: A jelenlegi Wine fejlesztõi fa elérhetõ Git-en keresztül.
+ Látogasson el ide a további információhoz: http://www.winehq.org/git
-Levelez�list�k:
- El�rhet� n�h�ny levelez�lista a Wine fejleszt�k sz�m�ra; n�zze meg a
- http://www.winehq.org/forums c�met a tov�bbi inform�ci�hoz.
+Levelezõlisták:
+ Elérhetõ néhány levelezõlista a Wine fejlesztõk számára; nézze meg a
+ http://www.winehq.org/forums címet a további információhoz.
-Ha valamit hozz�ad, vagy hib�t jav�t, k�rem k�ldj�n jav�t�foltot ('diff -u'
-form�tumban) a wine-devel(a)winehq.org levelez�lista c�mre, hogy beletehess�k a
-k�vetkez� kiad�sba.
+Ha valamit hozzáad, vagy hibát javít, kérem küldjön javítófoltot ('diff -u'
+formátumban) a wine-devel(a)winehq.org levelezõlista címre, hogy beletehessük a
+következõ kiadásba.
--
Alexandre Julliard
diff --git a/documentation/README.ko b/documentation/README.ko
index 4686ad8eee..a0fdcb045e 100644
--- a/documentation/README.ko
+++ b/documentation/README.ko
@@ -1,191 +1,191 @@
-1. �Ұ�
+1. 소개
-Wine�� Microsoft Windows ���α�(DOS, Windows 3.x, Win32 ���� ����
-����)�� ���н� �� ������ �� �ְ� �� �ִ� ���α��Դϴ�. Wine��
-Microsoft Windows ���̳ʸ��� �ε��ϰ� �����ϴ� ���α� �δ���
-Unix�� X11 API�� �Ἥ Windows API�� ������ ���̺귯��(Winelib)��
-�̷���� �ֽ��ϴ�. �� ���̺귯���� Win32 �ڵ带 ���н� ���� ���Ϸ�
-�̽��ϴ� �뵵�ε� ����� �� �ֽ��ϴ�.
+Wine은 Microsoft Windows 프로그램(DOS, Windows 3.x, Win32 실행 파일
+포함)을 유닉스 상에서 실행할 수 있게 해 주는 프로그램입니다. Wine은
+Microsoft Windows 바이너리를 로드하고 실행하는 프로그램 로더와
+Unix와 X11 API를 써서 Windows API를 구현한 라이브러리(Winelib)로
+이루어져 있습니다. 이 라이브러리는 Win32 코드를 유닉스 실행 파일로
+이식하는 용도로도 사용할 수 있습니다.
-Wine�� ���� ����Ʈ�����̸� GNU LGPL �Ͽ� �����˴ϴ�. �ڼ��� ������
-LICENSE ������ �����Ͻʽÿ�.
+Wine은 자유 소프트웨어이며 GNU LGPL 하에 배포됩니다. 자세한 내용은
+LICENSE 파일을 참조하십시오.
-2. ���� ��ġ �� ����
+2. 간편 설치 및 실행
-�ҽ��� �� �������ϴ� ��� Wine Installer�� �̿��ϴ� ���� �����ϴ�.
- Wine �ҽ��� �ֻ��� ���丮���� ���� ������ �����մϴ�:
+소스를 받아 컴파일하는 경우 Wine Installer를 이용하는 것이 좋습니다.
+ Wine 소스의 최상위 디렉토리에서 다음 명령을 실행합니다:
./tools/wineinstall
-���α��� ������ ���� "wine ���α���"ó�� �մϴ�. �� �ڼ��� ����
-�� ���� �ذ� ����� �� ������ ������ �κа� Wine ���������� �����Ͻʽÿ�.
-Ư�� http://www.winehq.org ����Ʈ�� ����� ������ ����Ǿ� �ֽ��ϴ�.
+프로그램을 실행할 때는 "wine 프로그램명"처럼 합니다. 더 자세한 정보
+및 문제 해결 방법은 이 파일의 나머지 부분과 Wine 맨페이지를 참조하십시오.
+특히 http://www.winehq.org 사이트에 방대한 정보가 집약되어 있습니다.
-3. ���忡 �ʿ��� ����
+3. 빌드에 필요한 조건
-Wine�� �������ϰ� �����Ϸ��� ���� �� �ϳ��� �ʿ��մϴ�:
+Wine을 컴파일하고 실행하려면 다음 중 하나가 필요합니다:
- ������ 2.0.36 �Ǵ� �� �̻�
- FreeBSD 5.3 �Ǵ� �� �̻�
- Solaris x86 2.5 �Ǵ� �� �̻�
+ 리눅스 2.0.36 또는 그 이상
+ FreeBSD 5.3 또는 그 이상
+ Solaris x86 2.5 또는 그 이상
NetBSD-current
- Mac OS X 10.5 �Ǵ� �� �̻�
+ Mac OS X 10.5 또는 그 이상
-Wine�� �����Ϸ��� Ŀ�� ������ ������ ������ �ʿ��ϱ� ������ ����� ����
-������ � ü���� �����մϴ�.
-Ŀ�� �����带 �����ϴ� ��Ÿ �ٸ� � ü���� ���� ������ �����Դϴ�.
+Wine을 실행하려면 커널 차원의 스레드 지원이 필요하기 때문에 현재는 여기
+나열한 운영 체제만 지원합니다.
+커널 스레드를 지원하는 기타 다른 운영 체제는 향후 지원할 예정입니다.
-������ ����:
- ������ 2.2.x������ �� ����� �������� ������ 2.0.x������ ����� ����
- �ְ� ���� ���� ���� �ֽ��ϴ�(�ʱ� 2.0.x ���������� ������ ���� ������
- ���α��� ����). ������ 2.4.x�� 2.6.x ���� �ֱ� Ŀ���� ����ϱ�
- �ٶ��ϴ�.
+리눅스 정보:
+ 리눅스 2.2.x에서는 잘 실행될 것이지만 리눅스 2.0.x에서는 실행될 수도
+ 있고 그렇지 않을 수도 있습니다(초기 2.0.x 버전에서는 스레드 관련 문제로
+ 프로그램이 죽음). 가급적 2.4.x와 2.6.x 같은 최근 커널을 사용하기
+ 바랍니다.
-FreeBSD ����:
- FreeBSD 4.x �� 5.x���� ��������� FreeBSD 5.3 ���� �������� �����
- �������� �ʽ��ϴ�.
+FreeBSD 정보:
+ FreeBSD 4.x 및 5.x에서 빌드되지만 FreeBSD 5.3 이전 버전에선 제대로
+ 동작하지 않습니다.
- �� �ڼ��� ������
+ 더 자세한 정보는
<ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/emulators/wine/>
- �� �ִ� FreeBSD ports �������� �����Ͻʽÿ�.
+ 에 있는 FreeBSD ports 페이지를 참조하십시오.
-Solaris ����:
- ���� ��κ��� ��� Wine�� �����Ϸ��� GNU ��ü��(gcc, gas ��)�� ����ؾ�
- �մϴ�. ���: gas�� �ܼ��� ��ġ�ϱ⸸ �ϸ� gcc���� ������ ���� ����
- �ֽ��ϴ�. gas�� ��ġ�� ���� gcc�� ���������ϰų� cc, as, ld ������
- GNU ���̳ʸ��� �ɺ� ��ũ�� �ɾ� �ִ� ���� �ʿ��ϴٰ� �մϴ�.
+Solaris 정보:
+ 거의 대부분의 경우 Wine을 빌드하려면 GNU 툴체인(gcc, gas 등)을 사용해야
+ 합니다. 경고: gas를 단순히 설치하기만 하면 gcc에서 사용되지 않을 수도
+ 있습니다. gas를 설치한 다음 gcc를 재컴파일하거나 cc, as, ld 명령을
+ GNU 바이너리로 심볼 링크를 걸어 주는 일이 필요하다고 합니다.
-NetBSD ����:
- USER_LDT, SYSVSHM, SYSVSEM, SYSVMSG �ɼ��� Ŀ�ο� ���ԵǾ� �־�� �մϴ�.
+NetBSD 정보:
+ USER_LDT, SYSVSHM, SYSVSEM, SYSVMSG 옵션이 커널에 포함되어 있어야 합니다.
-Mac OS X ����:
- x86 �ӽſ��� �����Ϸ��� Xcode 2.4 �Ǵ� �� �̻��� �ʿ��մϴ�.
+Mac OS X 정보:
+ x86 머신에서 빌드하려면 Xcode 2.4 또는 그 이상이 필요합니다.
-�����Ǵ� ���� �ý���:
- Wine�� ��κ��� ���� �ý��ۿ��� �������� ����˴ϴ�. ������ /tmp
- ���丮�� umsdos Ÿ������ ����Ʈ�� ��쿡�� ���α��� �������
- �ʽ��ϴ�. Samba�� �̿��ؼ� ������ �����ϴ� ��� �� ���� ȣȯ��
- ������ �����DZ �߽��ϴ�. ���� NTFS�� ���� ��ũ ��Ͻ� ��������
- ����Ǿ� ���� �ʽ��ϴ�. Windows ���α��� ��κ� ��ũ ���
- ������ ����ϹǷ� NTFS�� ������ ������� �ʴ� ���� �����ϴ�. NTFS
- ������ ��� ���� ������ ��ġ�� ������ ���� ����Ͻñ� �ٶ��ϴ�.
-
-�ʼ� ���� ���:
- X11 ���߿� ��� ������ ��ġ�Ǿ� �־�� �մϴ�(����ȿ����� xlib6g-dev,
- ���������� XFree86-devel�̶� ��Ű�������� �Ǿ� ����).
+지원되는 파일 시스템:
+ Wine은 대부분의 파일 시스템에서 문제없이 실행됩니다. 그렇지만 /tmp
+ 디렉토리가 umsdos 타입으로 마운트된 경우에는 프로그램이 실행되지
+ 않습니다. Samba를 이용해서 파일을 액세스하는 경우 몇 가지 호환성
+ 문제가 보고되기도 했습니다. 또한 NTFS는 현재 디스크 기록시 안정성이
+ 보장되어 있지 않습니다. Windows 프로그램은 대부분 디스크 어딘가에
+ 데이터를 기록하므로 NTFS는 가급적 사용하지 않는 것이 좋습니다. NTFS
+ 파일의 경우 쓰기 가능한 위치로 복사한 다음 사용하시기 바랍니다.
-�ʼ� ���� ����:
- x86 �ý��ۿ����� gcc 2.7.2 �̻��� �ʿ��մϴ�.
- 2.7.2.3 ���� ������ ����ȭ �ɼ��� �Ѱ� �������ϸ� ��� ���Ͽ��� ������
- ���� �� �ִµ�, ��κ� ��� ���� ������ ���õ� ������ ���� �͵��Դϴ�.
+필수 구성 요소:
+ X11 개발용 헤더 파일이 설치되어 있어야 합니다(데비안에서는 xlib6g-dev,
+ 레드햇에서는 XFree86-devel이란 패키지명으로 되어 있음).
- "make" ���α��� �翬�� �ʼ��Դϴ�(���� ��κ� GNU make ���).
+필수 빌드 도구:
+ x86 시스템에서는 gcc 2.7.2 이상이 필요합니다.
+ 2.7.2.3 이전 버전은 최적화 옵션을 켜고 컴파일하면 몇몇 파일에서 문제가
+ 발생할 수 있는데, 대부분 헤더 파일 관리와 관련된 문제로 인한 것들입니다.
- flex ���� 2.5 �̻�� bison�� �ʿ��մϴ�.
+ "make" 프로그램은 당연히 필수입니다(거의 대부분 GNU make 사용).
-������ ���̺귯��:
- ���� ������ ������ ������ ���̺귯���� ./configure --verbose ��������
- Ȯ���� �� �ֽ��ϴ�.
+ flex 버전 2.5 이상과 bison이 필요합니다.
+선택적 라이브러리:
+ 포함 여부의 선택이 가능한 라이브러리는 ./configure --verbose 명령으로
+ 확인할 수 있습니다.
-4. �������ϱ�
-wineinstall�� ������� �ʴ� ��� ���� ������ �Ἥ Wine�� �����մϴ�:
+4. 컴파일하기
+
+wineinstall을 사용하지 않는 경우 다음 명령을 써서 Wine을 빌드합니다:
./configure
make depend
make
-�̷��� �ϸ� "wine" ���α��� �ټ��� ���̺귯��/���̳ʸ��� ����˴ϴ�.
-"wine" ���α��� Windows ���� ������ �ε��ϰ� �����ϴ� �� ���˴ϴ�.
-"libwine" ���̺귯��("Winelib")�� Windows �ҽ� �ڵ带 ���н� ��
-�������ϰ� ��ũ�ϴ� �뵵�� ����� �� �ֽ��ϴ�.
+이렇게 하면 "wine" 프로그램과 다수의 라이브러리/바이너리가 빌드됩니다.
+"wine" 프로그램은 Windows 실행 파일을 로드하고 실행하는 데 사용됩니다.
+"libwine" 라이브러리("Winelib")는 Windows 소스 코드를 유닉스 상에서
+컴파일하고 링크하는 용도로 사용할 수 있습니다.
-������ ���� �ɼ��� ������ ./configure --help ������ ����մϴ�.
+컴파일 설정 옵션을 보려면 ./configure --help 명령을 사용합니다.
-��ġ ������ �Ἥ �� �������� �����̵��Ϸ��� ���� �������� �ֻ���
-���丮(README ������ ��� �ִ� ���丮)�� ���ϴ�. �� ����
-"make clean" ������ �����ϰ� �Ʒ� �������� �ҽ��� ��ġ�մϴ�:
+패치 파일을 써서 새 릴리스로 업그레이드하려면 먼저 릴리스의 최상위
+디렉토리(README 파일이 들어 있는 디렉토리)로 갑니다. 그런 다음
+"make clean" 명령을 실행하고 아래 명령으로 소스를 패치합니다:
bunzip2 -c patch-file | patch -p1
-"patch-file"�� ��ġ ������ �̸��Դϴ�(wine-0.9.x.diff.bz2 ���� ����).
-��ġ�� �������� "./configure", "make depend && make"�� ���ʷ�
-�����ϸ� �˴ϴ�.
+"patch-file"은 패치 파일의 이름입니다(wine-0.9.x.diff.bz2 등의 형태).
+패치한 다음에는 "./configure", "make depend && make"를 차례로
+실행하면 됩니다.
-5. ����
+5. 설정
-Wine�� �ϴ� ���������� ����� �������� "make install" ��������
-���� ���ϰ� ��������, ��Ÿ �ʿ��� ������ �ý��ۿ� ��ġ�� �� �ֽ��ϴ�.
+Wine이 일단 정상적으로 빌드된 다음에는 "make install" 명령으로
+실행 파일과 맨페이지, 기타 필요한 파일을 시스템에 설치할 수 있습니다.
-��ġ�ϱ� �� ���� ������ Wine�� �����ؾ� �Ѵٴ� ���� ���� ���ñ�
-�ٶ��ϴ�. "dpkg -r wine" �Ǵ� "rpm -e wine" �Ǵ� "make uninstall" ����
-�������� ���� ������ ������ �� �ֽ��ϴ�.
+설치하기 전 이전 버전의 Wine을 제거해야 한다는 점을 잊지 마시기
+바랍니다. "dpkg -r wine" 또는 "rpm -e wine" 또는 "make uninstall" 등의
+명령으로 이전 버전을 제거할 수 있습니다.
-���� ���� ������ http://www.winehq.org/�� Support �������� �ֽ��ϴ�.
+설정 관련 도움말은 http://www.winehq.org/의 Support 페이지에 있습니다.
-���̺귯�� �ε� ����("Error while loading shared libraries: libntdll.so")��
-���ϴ� ��� ���̺귯�� ��ΰ� /etc/ld.so.conf ���� �ȿ� �����Ǿ� �ִ���
-Ȯ���� ���� root �������� ldconfig�� �����Ͻʽÿ�.
+라이브러리 로딩 에러("Error while loading shared libraries: libntdll.so")가
+발생하는 경우 라이브러리 경로가 /etc/ld.so.conf 파일 안에 지정되어 있는지
+확인한 다음 root 권한으로 ldconfig를 실행하십시오.
-6. ���α� ����
+6. 프로그램 실행
-Wine�� ������ �� ���� ������ ��ü ��θ� ������ ���� �ְ� ���ϸ��� ������
-���� �ֽ��ϴ�.
+Wine을 실행할 때 실행 파일의 전체 경로를 지정할 수도 있고 파일명만 지정할
+수도 있습니다.
-���� ��� ī����̸� �����Ϸ���:
+예를 들어 카드놀이를 실행하려면:
- wine sol (������ ã�� ���� ���� ���Ͽ� ������
- wine sol.exe �˻� ��θ� �̿�)
+ wine sol (파일을 찾기 위해 설정 파일에 지정된
+ wine sol.exe 검색 경로를 이용)
- wine c:\\windows\\sol.exe (DOS ���ϸ� ������ �̿�)
+ wine c:\\windows\\sol.exe (DOS 파일명 문법을 이용)
- wine /usr/windows/sol.exe (���н� ���ϸ� ������ �̿�)
+ wine /usr/windows/sol.exe (유닉스 파일명 문법을 이용)
wine sol.exe /parameter1 -parameter2 parameter3
- (���α��� ȣ���� �� �Ķ���� �Ѱ���)
+ (프로그램을 호출할 때 파라미터를 넘겨줌)
-Wine�� ���� �ϼ� �ܰ迡 �������� ���߱� ������ ���α��� ����� �������
-���� �� �ֽ��ϴ�. ���α��� �״� ��� ������ �м��ϰ� ������ �� �ֵ���
-����� ���� �ڵ� ���Ե˴ϴ�. �ڼ��� ����� ����� Wine ������ ���̵���
-����� ������ �����Ͻñ� �ٶ��ϴ�.
+Wine은 아직 완성 단계에 도달하지 못했기 때문에 프로그램이 제대로 실행되지
+않을 수 있습니다. 프로그램이 죽는 경우 문제를 분석하고 수정할 수 있도록
+디버그 모드로 자동 진입됩니다. 자세한 디버깅 방법은 Wine 개발자 가이드의
+디버깅 섹션을 참조하시기 바랍니다.
-7. �� �ڼ��� ����
+7. 더 자세한 정보
-WWW: ���� ������ Wine ���̵�, ���ø����̼� �����ͺ��̽�, ���� ���� ��
- http://www.winehq.org/ �� �ִ� WineHQ ����Ʈ�� ���� ���� ������ ����
- �� �ֽ��ϴ�. ������ ã�� �� �밳 �� ����Ʈ�� ������� �˴ϴ�.
+WWW: 여러 종류의 Wine 가이드, 애플리케이션 데이터베이스, 버그 추적 등
+ http://www.winehq.org/ 에 있는 WineHQ 사이트에 가면 많은 정보를 얻을
+ 수 있습니다. 정보를 찾을 때 대개 이 사이트가 출발점이 됩니다.
-FAQ: Wine FAQ�� http://www.winehq.org/FAQ �� �ֽ��ϴ�.
+FAQ: Wine FAQ은 http://www.winehq.org/FAQ 에 있습니다.
-Usenet: Wine ���� ������ �����ϰų� ������ �������� comp.emulators.ms-windows.wine
- ���� �̿��ϱ� �ٶ��ϴ�.
+Usenet: Wine 관련 주제를 논의하거나 도움을 받으려면 comp.emulators.ms-windows.wine
+ 그룹을 이용하기 바랍니다.
-Bugs: http://bugs.winehq.org �� Wine Bugzilla�� ���� �����Ͻʽÿ�.
- ���� �������� �����ϱ� �� ���� ������ �̹� ����� ���� �ִ���
- �����ͺ��̽� �˻��� ���� Ȯ���ϱ� �ٶ��ϴ�.
- comp.emulators.ms-windows.wine �쿡 ���� �������� �÷��� �˴ϴ�.
+Bugs: http://bugs.winehq.org 의 Wine Bugzilla에 버그를 보고하십시오.
+ 버그 보고서를 제출하기 전 같은 문제가 이미 제출된 적이 있는지
+ 데이터베이스 검색을 통해 확인하기 바랍니다.
+ comp.emulators.ms-windows.wine 그룹에 버그 보고서를 올려도 됩니다.
-IRC: irc.freenode.net �� #WineHQ ä�ο��� ������ ���� �� �ֽ��ϴ�.
+IRC: irc.freenode.net 의 #WineHQ 채널에서 도움을 받을 수 있습니다.
-GIT: Wine ���� Ʈ���� ���� GIT�� �����ǰ� �ֽ��ϴ�. �� �ڼ��� ������
- http://www.winehq.org/site/git �� �����ϱ� �ٶ��ϴ�.
+GIT: Wine 개발 트리는 현재 GIT로 관리되고 있습니다. 더 자세한 정보는
+ http://www.winehq.org/site/git 를 참조하기 바랍니다.
-���ϸ� ����Ʈ:
- Wine ����ڿ� �����ڸ� ���� ���ϸ� ����Ʈ�� ��ǰ� �ֽ��ϴ�.
- �� �ڼ��� ������ http://www.winehq.org/forums �� �����ϱ� �ٶ��ϴ�.
+메일링 리스트:
+ Wine 사용자와 개발자를 위해 메일링 리스트가 운영되고 있습니다.
+ 더 자세한 정보는 http://www.winehq.org/forums 를 참조하기 바랍니다.
-��Ű: Wine ��Ű�� http://wiki.winehq.org �� �ֽ��ϴ�.
+위키: Wine 위키는 http://wiki.winehq.org 에 있습니다.
-�߰��� �����̳� ������ ���װ� �ִٸ� ������ �������� ���Ե� �� �ֵ���
-wine-devel(a)winehq.org ���ϸ� ����Ʈ�� ��ġ('diff -u' �������� ��)�� ����
-�ֽñ� �ٶ��ϴ�.
+추가할 내용이나 수정할 버그가 있다면 다음번 릴리스에 포함될 수 있도록
+wine-devel(a)winehq.org 메일링 리스트로 패치('diff -u' 형식으로 된)를 보내
+주시기 바랍니다.
--
Alexandre Julliard
diff --git a/documentation/README.pt b/documentation/README.pt
index b0914f2098..3f3ff2cc5e 100644
--- a/documentation/README.pt
+++ b/documentation/README.pt
@@ -1,26 +1,26 @@
-1. INTRODU��O
+1. INTRODUÇÃO
-Wine � um programa que permite correr programas Microsoft Windows
-(incluindo DOS, Windows 3.x e Win32 execut�veis) em Unix.
-Consiste num carregador (loader), que carrega e executa um bin�rio
-Microsoft Windows, e uma livraria (chamada Winelib) que implementa
-Windows API calls usando o Unix ou X11 equivalentes. A livraria tamb�m
-pode ser usada para "porting" Win32 c�digo para execut�veis do nativo Unix .
+Wine é um programa que permite correr programas Microsoft Windows
+(incluindo DOS, Windows 3.x e Win32 executáveis) em Unix.
+Consiste num carregador (loader), que carrega e executa um binário
+Microsoft Windows, e uma livraria (chamada Winelib) que implementa
+Windows API calls usando o Unix ou X11 equivalentes. A livraria também
+pode ser usada para "porting" Win32 código para executáveis do nativo Unix .
-Wine � software gr�tis,autorizado segundo a GNU LGPL; ver o ficheiro
-LICEN�A para os detalhes.
+Wine é software grátis,autorizado segundo a GNU LGPL; ver o ficheiro
+LICENÇA para os detalhes.
-2.ARRANQUE R�PIDO
+2.ARRANQUE RÁPIDO
-Sempre que se compila da source, � recomendado que se use o Wine
-Installer para construir e instalar o Wine. Desde a primeira directoria
-do Wine source (que cont�m este ficheiro),corre:
+Sempre que se compila da source, é recomendado que se use o Wine
+Installer para construir e instalar o Wine. Desde a primeira directoria
+do Wine source (que contém este ficheiro),corre:
./tools/wineinstall
-Corre os programas conforme as "wine [options] program". Para mais
-informa��es e reso�u��o de problemas. L� o resto deste ficheiro, a Wine
-man page, e especialmente a abund�ncia de informa��o encontrada em
+Corre os programas conforme as "wine [options] program". Para mais
+informações e resoçução de problemas. Lê o resto deste ficheiro, a Wine
+man page, e especialmente a abundância de informação encontrada em
http://www.winehq.org.
3.REQUERIMENTOS
@@ -32,128 +32,128 @@ Para compilar e correr o Wine, deves ter o seguinte:
Solaris x86 2.5 ou seguinte
NetBSD-current
-Como o Wine requer sequ�ncias kernel-level para poder correr, apenas
-os sistemas operativos acima mencionados s�o suportados.
-Outros sistemas operativos que suportam sequ�ncias kernel, talvez
+Como o Wine requer sequências kernel-level para poder correr, apenas
+os sistemas operativos acima mencionados são suportados.
+Outros sistemas operativos que suportam sequências kernel, talvez
venham a ser suportados no futuro.
Linux info:
-Enquanto o Linux 2.2.x ir� sobretudo trabalhar e Linux 2.0.x poder�
-ir� contudo trabalhar (vers�es 2.0.x antigas tem mal funcionamento
-relacionados a tarefas), ser� muito melhor teres um kernel atualizado
+Enquanto o Linux 2.2.x irá sobretudo trabalhar e Linux 2.0.x poderá
+irá contudo trabalhar (versões 2.0.x antigas tem mal funcionamento
+relacionados a tarefas), será muito melhor teres um kernel atualizado
como 2.4.x.
FreeBSD info:
-Wine dever� construir no FreeBSD 4.x e FreeBSD 5.x, mas vers�es anteriores
-a FreeBSD 5.3 geralmente n�o trabalham corretamente.
+Wine deverá construir no FreeBSD 4.x e FreeBSD 5.x, mas versões anteriores
+a FreeBSD 5.3 geralmente não trabalham corretamente.
-Mais informa��es encontra-se em:
+Mais informações encontra-se em:
ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/emulators/wine/
Solaris info:
-Tu ir�s provavelmente ter que construir o Wine com as ferramentas GNU
-(gcc, gas, etc.). Aviso: ao instalar gas *n�o* assegura que ser� usado
-pelo gcc. Recompilar o gcc depois de instalar o gas ou symking cc, as e
-ld para as ferramentas gnu � dito que � necess�rio.
+Tu irás provavelmente ter que construir o Wine com as ferramentas GNU
+(gcc, gas, etc.). Aviso: ao instalar gas *não* assegura que será usado
+pelo gcc. Recompilar o gcc depois de instalar o gas ou symking cc, as e
+ld para as ferramentas gnu é dito que é necessário.
NetBSD info:
-Certifica-te que tens as op��es USER_LDT, SYSVSHM, SYSVSEM, e SYSVMSG
+Certifica-te que tens as opções USER_LDT, SYSVSHM, SYSVSEM, e SYSVMSG
ligadas ao teu kernel.
File systems info:
-O Wine dever� correr na maioria dos file systems. Contudo, o Wine falha
-no aranque se umsdos � usado para a directoria /tmp. Alguns problemas de
-compatibilidades foram relatados estando a usar ficheiros acessados
-atrav�s do Samba. Tamb�m, como o NTFS apenas pode ser usado com
-seguran�a com acesso readonly por agora, n�s n�o recomendamos o uso de
+O Wine deverá correr na maioria dos file systems. Contudo, o Wine falha
+no aranque se umsdos é usado para a directoria /tmp. Alguns problemas de
+compatibilidades foram relatados estando a usar ficheiros acessados
+através do Samba. Também, como o NTFS apenas pode ser usado com
+segurança com acesso readonly por agora, nós não recomendamos o uso de
NTFS. Como os programas de Windows precisam de acesso write em quase tudo.
-No caso de NTFS files, copia por cima para uma localiza��o em que se
+No caso de NTFS files, copia por cima para uma localização em que se
possa escrever.
-Requisitos b�sicos:
+Requisitos básicos:
Tu precisas de ter instalados os fucheiros de include do X11 development
(chamados xlib6g-dev em Debian e Xfree86-devel no RedHat).
-Requisitos para as ferramentas de constru��o:
-Em sistemas x86 o gcc >= 2.7.2 � requerido.
-Vers�es anteriores � 2.7.2.3 poder�o ter problemas quando certos
-ficheiros s�o compilados com optimiza��o, frequentemente devido a
-problemas relacionados com as gest�es dos cabe�alhos dos ficheiros.
-Actualmente o pgcc n�o trabalha com o Wine. A causa deste problema �
+Requisitos para as ferramentas de construção:
+Em sistemas x86 o gcc >= 2.7.2 é requerido.
+Versões anteriores à 2.7.2.3 poderão ter problemas quando certos
+ficheiros são compilados com optimização, frequentemente devido a
+problemas relacionados com as gestôes dos cabeçalhos dos ficheiros.
+Actualmente o pgcc não trabalha com o Wine. A causa deste problema é
desconhecida.
-Claro que tamb�m precisas fazer "make" (geralmente como o GNU make).
+Claro que também precisas fazer "make" (geralmente como o GNU make).
-Tu tamb�m necessitas do flex versao 2.5 ou superior e o bison.
+Tu também necessitas do flex versao 2.5 ou superior e o bison.
Se estiveres a usar RedHat ou Debian, instala os pacotes do flex e do bison.
Bibliotecas de suporte opcionais:
-Se desejares suporte de impress�o do CUPS, por favor instala os pacotes
+Se desejares suporte de impressão do CUPS, por favor instala os pacotes
cups e cups-devel.
-4.COMPILA��O
+4.COMPILAÇÃO
-No caso de escolheres n�o usar wineinstall, corre os seguintes comandos
+No caso de escolheres não usar wineinstall, corre os seguintes comandos
para contruir o Wine:
./configure
make depend
make
-Isto ir� contruir o programa "wine" e numerosos suportes livraris/binarios.
-O programa "wine" ir� carregar e correr executaveis do Windows.
-A livraria "libwine" ("winelib") pode ser usada para compilar e ligar
+Isto irá contruir o programa "wine" e numerosos suportes livraris/binarios.
+O programa "wine" irá carregar e correr executaveis do Windows.
+A livraria "libwine" ("winelib") pode ser usada para compilar e ligar
Windows source code sob o Unix.
-Para ver as op��es de compila��o da configura��o, faz ./configure -help.
+Para ver as opções de compilação da configuração, faz ./configure -help.
-Para fazeres o upgrade de uma nova vers�o atravez de um ficheiro patch,
-primeiro cd para a directoria top da distribui��o (a que contem este
-ficheiro README). A seguir faz um "make clean", e faz o patch da
-distribui��o com:
+Para fazeres o upgrade de uma nova versão atravez de um ficheiro patch,
+primeiro cd para a directoria top da distribuição (a que contem este
+ficheiro README). A seguir faz um "make clean", e faz o patch da
+distribuição com:
gunzip -c patch-file | patch -p1
-onde "patch-file" � o nome do ficheiro patch ( qualquer coisa como
-Wine.yymmdd.diff.gz). Tu podes entao correr fazendo "./configure", e
+onde "patch-file" é o nome do ficheiro patch ( qualquer coisa como
+Wine.yymmdd.diff.gz). Tu podes entao correr fazendo "./configure", e
depois corre "make depend && make"
5.SETUP
-Uma vez o Wine contruido correctamente, tu podes entao fazer o "make
-install"; isto ir� instalar o wine executavel, o Wine man page, e alguns
-outros ficheiros necess�rios.
+Uma vez o Wine contruido correctamente, tu podes entao fazer o "make
+install"; isto irá instalar o wine executavel, o Wine man page, e alguns
+outros ficheiros necessários.
-N�o esquecer de primeiro desinstalar qualquer previo conflito relativo a
-instala��o do Wine.
-Tenta outro "dpkg -r wine" ou "rpm -e wine" ou "make uninstall" antes de
+Não esquecer de primeiro desinstalar qualquer previo conflito relativo a
+instalação do Wine.
+Tenta outro "dpkg -r wine" ou "rpm -e wine" ou "make uninstall" antes de
installar.
-Ver http://www.winehq.org/support/ para informa��o sobre a
-configura�ao.
+Ver http://www.winehq.org/support/ para informação sobre a
+configuraçao.
-No caso da livraria carregar erros (e.g. "Error while loading shared
-libraries: libntdll.so"), tem a certeza de adicionar o caminho da
+No caso da livraria carregar erros (e.g. "Error while loading shared
+libraries: libntdll.so"), tem a certeza de adicionar o caminho da
livraria para /etc/ld.so.conf e correr ldconfig como root.
-Para verificar a correc��o do ambiente, tu precisas para que o Wine
+Para verificar a correcção do ambiente, tu precisas para que o Wine
corra com sucesso, tu podes correr "./tools/winecheck | less".
-Tu ir�s obter uma percentagem do resultado indicando "Wine configuration
+Tu irás obter uma percentagem do resultado indicando "Wine configuration
correctness".
-Como este programa � alpha, ainda n�o correu um verdadeiro e exaustivo
-teste, onde, ent�o deve ser levado apenas como um primeiro passo de
-verifica��o.
+Como este programa é alpha, ainda não correu um verdadeiro e exaustivo
+teste, onde, então deve ser levado apenas como um primeiro passo de
+verificação.
-Ver wine.confman page, como se muda apenas para o suporte em modo texto
+Ver wine.confman page, como se muda apenas para o suporte em modo texto
se desejado.
6.CORRER PROGRAMAS
-Quando e invoca o Wine, tens que especificar o caminho (patch) complecto
+Quando e invoca o Wine, tens que especificar o caminho (patch) complecto
do executavel, ou apenas o nome do ficheiro.
-Por exemplo: para correr o Solit�rio:
+Por exemplo: para correr o Solitário:
wine sol (usando o searchpatch para lozalizar o ficheiro)
wine sol.exe
@@ -161,49 +161,49 @@ Por exemplo: para correr o Solit
wine /usr/windows/sol.exe (usando um nome de ficheiro Unix)
-Nota: o caminho do ficheiro tamb�m ir� ser adicionado ao caminho(patch)
-quando um nome complecto � fornecido na linha de comando.
+Nota: o caminho do ficheiro também irá ser adicionado ao caminho(patch)
+quando um nome complecto é fornecido na linha de comando.
-O Wine ainda n�o est� complecto.ent�o poder�o v�rios programas
-quebrar(crash). Providenciamos-te bem para que o winedbg esteja
-correctamente e de acordo com a documentation/debugger.sgml, sera-te
-dado um detector de erros (debugger) para que possas investigar e
+O Wine ainda não está complecto.então poderão vários programas
+quebrar(crash). Providenciamos-te bem para que o winedbg esteja
+correctamente e de acordo com a documentation/debugger.sgml, sera-te
+dado um detector de erros (debugger) para que possas investigar e
corrigir os problemas.
-Para mais informa��o como em fazer isto ou aquilo, por favor l� o
+Para mais informação como em fazer isto ou aquilo, por favor lê o
ficheiro documentation/debugging.sgml.
-Tu deves fazer um backup de todos os teus ficheiros importantes em que
-destes acesso ao Wine, ou usa uma especial c�pia deles.tem havido casos
-de certos users que t�m feito relatos de ficheiros corronpidos. N�o
-corrar o Explorer, por exemplo, se n�o tiveres um backup pr�prio, que
-por vezes renomeia e estraga algumas directorias. Nem todos os MS apps
-como o e.g. Messenger s�o seguros, ao correrem o Explorer de alguma
-maneira. Este caso particular de corrupe�ao (!$!$!$!$.pfr) podem ao
+Tu deves fazer um backup de todos os teus ficheiros importantes em que
+destes acesso ao Wine, ou usa uma especial cópia deles.tem havido casos
+de certos users que têm feito relatos de ficheiros corronpidos. Não
+corrar o Explorer, por exemplo, se não tiveres um backup próprio, que
+por vezes renomeia e estraga algumas directorias. Nem todos os MS apps
+como o e.g. Messenger são seguros, ao correrem o Explorer de alguma
+maneira. Este caso particular de corrupeçao (!$!$!$!$.pfr) podem ao
menos parcialmente podem ser corrigidos usando
http://home.nexgo.de/andi.mohr/download/decorrupt_explorer
-7.ARRANJAR MAIS INFORMA��O
+7.ARRANJAR MAIS INFORMAÇÃO
-www: Uma grande quantidade de informa��o acerca do Wine est� disponivel
- pelo WineHQ em http://www.winehq.org/ : varios guias Wine, base de
- dados de aplica��es, localiza�ao de erros. Isto � provavelmente o
- melhor ponto de come�o.
+www: Uma grande quantidade de informação acerca do Wine está disponivel
+ pelo WineHQ em http://www.winehq.org/ : varios guias Wine, base de
+ dados de aplicações, localizaçao de erros. Isto é provavelmente o
+ melhor ponto de começo.
-FAQ: A Wine FAQ est� localizada em http://www.winehq.org/FAQ
+FAQ: A Wine FAQ está localizada em http://www.winehq.org/FAQ
-Usenet: Tu podes discutor t�picos relacionados de Wine e obter ajuda em
+Usenet: Tu podes discutor tópicos relacionados de Wine e obter ajuda em
comp.emulators.ms-windows.wine.
-IRC: Ajuda online est� disponivel em #WineHQ on irc.freenode.net.
+IRC: Ajuda online está disponivel em #WineHQ on irc.freenode.net.
-Git: O currente desenvolvimento do Wine est� disponivel por Git.
- Vai a http://www.winehq.org/git para mais informa��o.
+Git: O currente desenvolvimento do Wine está disponivel por Git.
+ Vai a http://www.winehq.org/git para mais informação.
Mailing Lists:
- H� algumas mailing list para responsaveis pelo desenvolvimento Wine; ver em
- http://www.winehq.org/forums para mais informa��o.
+ Há algumas mailing list para responsaveis pelo desenvolvimento Wine; ver em
+ http://www.winehq.org/forums para mais informação.
-Se tu acrescentaste algo,ou corrigiste um bug, por favor envia um patch
-(em 'diff -u' format) para wine-devel(a)winehq.org lista para inclus�o
-no pr�ximo lan�amento.
+Se tu acrescentaste algo,ou corrigiste um bug, por favor envia um patch
+(em 'diff -u' format) para wine-devel(a)winehq.org lista para inclusão
+no próximo lançamento.
diff --git a/documentation/README.pt_br b/documentation/README.pt_br
index a2cccac88e..01e0be773a 100644
--- a/documentation/README.pt_br
+++ b/documentation/README.pt_br
@@ -1,125 +1,125 @@
-1. INTRODU��O
+1. INTRODUÇÃO
-Wine � um programa que permite executar programas Microsoft Windows
-(incluindo execut�veis DOS, Windows 3.x, Win32 e Win64) no Unix.
-Constitu�do de um programa carregador (loader) que carrega e executa
-um bin�rio Microsoft Windows, e uma biblioteca (chamada Winelib) que
+Wine é um programa que permite executar programas Microsoft Windows
+(incluindo executáveis DOS, Windows 3.x, Win32 e Win64) no Unix.
+Constituído de um programa carregador (loader) que carrega e executa
+um binário Microsoft Windows, e uma biblioteca (chamada Winelib) que
implementa chamadas da API do Windows usando os equivalentes do Unix
-ou do X11. A biblioteca tamb�m pode ser usada para portar c�digo
-Win32 em execut�veis nativos Unix.
+ou do X11. A biblioteca também pode ser usada para portar código
+Win32 em executáveis nativos Unix.
-Wine � software livre, liberado segundo a GNU LGPL; veja o arquivo
+Wine é software livre, liberado segundo a GNU LGPL; veja o arquivo
LICENSE para detalhes.
-2. IN�CIO R�PIDO
+2. INÍCIO RÁPIDO
-Sempre que se compilam os fontes, � recomendado usar o Wine Installer
-para construir e instalar o Wine. Estando no diret�rio de mais alto
-n�vel do c�digo fonte do Wine, execute:
+Sempre que se compilam os fontes, é recomendado usar o Wine Installer
+para construir e instalar o Wine. Estando no diretório de mais alto
+nível do código fonte do Wine, execute:
./tools/wineinstall
-Execute programas conforme "wine programa". Para maiores informa��es
-e resolu��o de problemas, leia o restante deste arquivo, a p�gina
-"man" do Wine (man wine), e especialmente a abund�ncia de informa��o
+Execute programas conforme "wine programa". Para maiores informações
+e resolução de problemas, leia o restante deste arquivo, a página
+"man" do Wine (man wine), e especialmente a abundância de informação
encontrada em http://www.winehq.org.
3. REQUERIMENTOS
-Para compilar e executar o Wine, voc� deve ter o seguinte:
+Para compilar e executar o Wine, você deve ter o seguinte:
- Linux vers�o 2.0.36 ou posterior
+ Linux versão 2.0.36 ou posterior
FreeBSD 8.0 ou posterior
Solaris x86 9 ou posterior
NetBSD-atual
Mac OS X 10.5 ou posterior
-Como o Wine requer suporte a tarefas no n�vel de kernel para executar,
-somente os sistemas operacionais acima mencionados s�o suportados.
-Outros sistemas operacionais que suportarem tarefas do kernel poder�o
+Como o Wine requer suporte a tarefas no nível de kernel para executar,
+somente os sistemas operacionais acima mencionados são suportados.
+Outros sistemas operacionais que suportarem tarefas do kernel poderão
ter suporte no futuro.
-Informa��es para o FreeBSD:
- O Wine em geral n�o deve funcionar corretamente em vers�es antes da 8.0.
- Veja http://wiki.freebsd.org/Wine para mais informa��es.
+Informações para o FreeBSD:
+ O Wine em geral não deve funcionar corretamente em versões antes da 8.0.
+ Veja http://wiki.freebsd.org/Wine para mais informações.
-Informa��es para o Solaris:
- Voc� provavelmente necessitar� construir o Wine com as ferramentas GNU
- (gcc, gas, etc.). Aviso: instalar gas N�O assegura que ser� usado pelo
- gcc. Recompilar o gcc depois de instalar o gas ou criar uma liga��o ao
- cc, as e ld para as ferramentas gnu � dito ser necess�rio.
+Informações para o Solaris:
+ Você provavelmente necessitará construir o Wine com as ferramentas GNU
+ (gcc, gas, etc.). Aviso: instalar gas NÃO assegura que será usado pelo
+ gcc. Recompilar o gcc depois de instalar o gas ou criar uma ligação ao
+ cc, as e ld para as ferramentas gnu é dito ser necessário.
-Informa��es para o NetBSD:
- Certifique-se de ter as op��es USER_LDT, SYSVSHM, SYSVSEM, e SYSVMSG
+Informações para o NetBSD:
+ Certifique-se de ter as opções USER_LDT, SYSVSHM, SYSVSEM, e SYSVMSG
ligadas no kernel.
-Informa��es para Mac OS X:
- Ser� necess�rio o Xcode 2.4 ou superior para compilar corretamente no x86.
- O driver gr�fico Mac requer OS X 10.6 ou superior e n�o ser� usado no 10.5.
+Informações para Mac OS X:
+ Será necessário o Xcode 2.4 ou superior para compilar corretamente no x86.
+ O driver gráfico Mac requer OS X 10.6 ou superior e não será usado no 10.5.
Sistemas de arquivo suportados:
O Wine deve rodar na maioria dos sistemas de arquivos. Alguns problemas de
- compatibilidade foram reportados quando usado via Samba. Al�m disso, o NTFS
- n�o prov� todas as funcionalidades necess�rias para alguns aplicativos.
- Usar uma parti��o nativa Unix � recomendado.
+ compatibilidade foram reportados quando usado via Samba. Além disso, o NTFS
+ não provê todas as funcionalidades necessárias para alguns aplicativos.
+ Usar uma partição nativa Unix é recomendado.
-Requisitos b�sicos:
- Voc� necessita ter instalados os arquivos de inclus�o para desenvolvimento
+Requisitos básicos:
+ Você necessita ter instalados os arquivos de inclusão para desenvolvimento
do X11 (chamados de xlib6g-dev no Debian e XFree86-devel no RedHat).
- Obviamente voc� tamb�m ir� precisar do "make" (comumente o GNU make).
+ Obviamente você também irá precisar do "make" (comumente o GNU make).
- Tamb�m ser� necess�rio o flex vers�o 2.5.33 ou superior e o bison.
+ Também será necessário o flex versão 2.5.33 ou superior e o bison.
Bibliotecas de suporte opcionais:
- O script configure ir� mostrar diversas mensagens quando bibliotecas
- opcionais n�o forem encontradas no seu sistema.
+ O script configure irá mostrar diversas mensagens quando bibliotecas
+ opcionais não forem encontradas no seu sistema.
Veja http://wiki.winehq.org/Recommended_Packages para dicas sobre
- pacotes que voc� pode instalar.
+ pacotes que você pode instalar.
- Em plataformas de 64 bits, se compilar Wine como 32 bits (padr�o), voc�
- precisa assegurar que as vers�es 32 bits das bibliotecas est�o instaladas,
+ Em plataformas de 64 bits, se compilar Wine como 32 bits (padrão), você
+ precisa assegurar que as versões 32 bits das bibliotecas estão instaladas,
veja http://wiki.winehq.org/WineOn64bit para mais detalhes.
- Se voc� quer um verdadeiro Wine de 64 bits (ou uma configura��o mista de
+ Se você quer um verdadeiro Wine de 64 bits (ou uma configuração mista de
32 e 64 bits) veja http://wiki.winehq.org/Wine64 para mais detalhes.
-4. COMPILA��O
+4. COMPILAÇÃO
-No caso de escolher n�o usar o wineinstall, execute os comandos a seguir
+No caso de escolher não usar o wineinstall, execute os comandos a seguir
para construir o Wine:
./configure
make
-Isto construir� o programa "wine" e v�rios bin�rios/bibliotecas de suporte.
-O programa "wine" carregar� e executar� execut�veis do Windows.
+Isto construirá o programa "wine" e vários binários/bibliotecas de suporte.
+O programa "wine" carregará e executará executáveis do Windows.
A biblioteca "libwine" ("Winelib") pode ser usada para compilar e ligar
-c�digo-fonte do Windows sob o Unix.
+código-fonte do Windows sob o Unix.
-Para ver as op��es de compila��o da configura��o, rode ./configure --help.
+Para ver as opções de compilação da configuração, rode ./configure --help.
-5. CONFIGURA��O
+5. CONFIGURAÇÃO
-Uma vez que o Wine esteja constru�do corretamente, voc� pode executar
-"make install"; assim ir� instalar o execut�vel do wine, as p�ginas
-"man" do Wine, e outros arquivos necess�rios.
+Uma vez que o Wine esteja construído corretamente, você pode executar
+"make install"; assim irá instalar o executável do wine, as páginas
+"man" do Wine, e outros arquivos necessários.
-N�o esque�a de desinstalar primeiramente qualquer instala��o pr�via do
+Não esqueça de desinstalar primeiramente qualquer instalação prévia do
Wine que possa ser conflitante. Tente tanto "dpkg -r wine", "rpm -e wine"
ou "make uninstall" antes de instalar.
-Depois de instalado, pode-se executar o programa de configura��o "winecfg".
-Veja a �rea de suporte em http://www.winehq.org/ para dicas de configura��o.
+Depois de instalado, pode-se executar o programa de configuração "winecfg".
+Veja a área de suporte em http://www.winehq.org/ para dicas de configuração.
6. EXECUTANDO PROGRAMAS
-Ao invocar o Wine, voc� pode especificar o caminho completo do execut�vel,
+Ao invocar o Wine, você pode especificar o caminho completo do executável,
ou somente um nome de arquivo.
Por exemplo, para executar o bloco de notas:
@@ -132,42 +132,42 @@ Por exemplo, para executar o bloco de notas:
wine ~/.wine/drive_c/windows/notepad.exe (usando um nome de arquivo Unix)
- wine notepad.exe leiame.txt (chamando o programa com par�metros)
+ wine notepad.exe leiame.txt (chamando o programa com parâmetros)
-O Wine n�o � perfeito, ent�o alguns programas podem travar. Se isso
-acontecer voc� ver� um registro do travamento (crash log) que voc�
-poder� anexar ao bug que for criar.
+O Wine não é perfeito, então alguns programas podem travar. Se isso
+acontecer você verá um registro do travamento (crash log) que você
+poderá anexar ao bug que for criar.
-7. OBTENDO MAIS INFORMA��O
+7. OBTENDO MAIS INFORMAÇÃO
-WWW: Uma grande quantidade de informa��o sobre o Wine est� dispon�vel
- no WineHQ em http://www.winehq.org/ : v�rios guias do Wine, base
- de dados de aplica��es, rastreamento de erros. Este � provavelmente
- o melhor ponto para come�ar.
+WWW: Uma grande quantidade de informação sobre o Wine está disponível
+ no WineHQ em http://www.winehq.org/ : vários guias do Wine, base
+ de dados de aplicações, rastreamento de erros. Este é provavelmente
+ o melhor ponto para começar.
-FAQ: O FAQ (perguntas frequentes) do Wine est� em http://www.winehq.org/FAQ
+FAQ: O FAQ (perguntas frequentes) do Wine está em http://www.winehq.org/FAQ
-Wiki: O wiki do Wine est� dispon�vel em http://wiki.winehq.org
+Wiki: O wiki do Wine está disponível em http://wiki.winehq.org
-Listas de discuss�o:
- H� diversas listas de mensagens para usu�rios e colaboradores no
+Listas de discussão:
+ Há diversas listas de mensagens para usuários e colaboradores no
desenvolvimento do Wine; veja http://www.winehq.org/forums para
- mais informa��o.
+ mais informação.
Bugs: Relate erros ao Bugzilla do Wine em http://bugs.winehq.org
Por favor, pesquise a base de dados do bugzilla para verificar
- se seu problema j� foi encontrado ou resolvido antes de enviar
- um relat�rio do erro.
+ se seu problema já foi encontrado ou resolvido antes de enviar
+ um relatório do erro.
-IRC: A ajuda online est� dispon�vel em #WineHQ em irc.freenode.net.
+IRC: A ajuda online está disponível em #WineHQ em irc.freenode.net.
-Git: A �rvore de desenvolvimento atual do Wine est� dispon�vel por Git.
- Visite http://www.winehq.org/git para mais informa��o.
+Git: A árvore de desenvolvimento atual do Wine está disponível por Git.
+ Visite http://www.winehq.org/git para mais informação.
-Se voc� alterar algo ou reparar um erro, envie, por favor, um patch
-(preferencialmente usando git-format-patch) � lista wine-devel(a)winehq.org
-para inclus�o na pr�xima distribui��o.
+Se você alterar algo ou reparar um erro, envie, por favor, um patch
+(preferencialmente usando git-format-patch) à lista wine-devel(a)winehq.org
+para inclusão na próxima distribuição.
--
Arquivo original escrito por:
@@ -175,7 +175,7 @@ Alexandre Julliard
julliard(a)winehq.org
--
-Tradu��o para Portugu�s do Brasil:
+Tradução para Português do Brasil:
Marcelo Duarte
wine-devel(a)bol.com.br
--
2.15.1
1
0
From: Lucian Poston <lucian.poston(a)gmail.com>
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
dlls/d2d1/d2d1_private.h | 2 +-
dlls/d2d1/factory.c | 182 ++++++++++++++++++++++++++++++++++++-----------
dlls/uuid/d2d.c | 2 +-
include/d2d1_1.idl | 136 +++++++++++++++++++++++++++++++++++
4 files changed, 278 insertions(+), 44 deletions(-)
create mode 100644 include/d2d1_1.idl
diff --git a/dlls/d2d1/d2d1_private.h b/dlls/d2d1/d2d1_private.h
index 98298f8..3b21bc1 100644
--- a/dlls/d2d1/d2d1_private.h
+++ b/dlls/d2d1/d2d1_private.h
@@ -24,7 +24,7 @@
#include <assert.h>
#include <limits.h>
#define COBJMACROS
-#include "d2d1.h"
+#include "d2d1_1.h"
#ifdef D2D1_INIT_GUID
#include "initguid.h"
#endif
diff --git a/dlls/d2d1/factory.c b/dlls/d2d1/factory.c
index 4b9315f..da2b892 100644
--- a/dlls/d2d1/factory.c
+++ b/dlls/d2d1/factory.c
@@ -26,7 +26,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
struct d2d_factory
{
- ID2D1Factory ID2D1Factory_iface;
+ ID2D1Factory1 ID2D1Factory1_iface;
LONG refcount;
ID3D10Device1 *device;
@@ -35,9 +35,9 @@ struct d2d_factory
float dpi_y;
};
-static inline struct d2d_factory *impl_from_ID2D1Factory(ID2D1Factory *iface)
+static inline struct d2d_factory *impl_from_ID2D1Factory1(ID2D1Factory1 *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_factory, ID2D1Factory_iface);
+ return CONTAINING_RECORD(iface, struct d2d_factory, ID2D1Factory1_iface);
}
static HRESULT d2d_factory_reload_sysmetrics(struct d2d_factory *factory)
@@ -58,14 +58,15 @@ static HRESULT d2d_factory_reload_sysmetrics(struct d2d_factory *factory)
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_QueryInterface(ID2D1Factory *iface, REFIID iid, void **out)
+static HRESULT STDMETHODCALLTYPE d2d_factory_QueryInterface(ID2D1Factory1 *iface, REFIID iid, void **out)
{
TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
- if (IsEqualGUID(iid, &IID_ID2D1Factory)
+ if (IsEqualGUID(iid, &IID_ID2D1Factory1)
+ || IsEqualGUID(iid, &IID_ID2D1Factory)
|| IsEqualGUID(iid, &IID_IUnknown))
{
- ID2D1Factory_AddRef(iface);
+ ID2D1Factory1_AddRef(iface);
*out = iface;
return S_OK;
}
@@ -76,9 +77,9 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_QueryInterface(ID2D1Factory *iface,
return E_NOINTERFACE;
}
-static ULONG STDMETHODCALLTYPE d2d_factory_AddRef(ID2D1Factory *iface)
+static ULONG STDMETHODCALLTYPE d2d_factory_AddRef(ID2D1Factory1 *iface)
{
- struct d2d_factory *factory = impl_from_ID2D1Factory(iface);
+ struct d2d_factory *factory = impl_from_ID2D1Factory1(iface);
ULONG refcount = InterlockedIncrement(&factory->refcount);
TRACE("%p increasing refcount to %u.\n", iface, refcount);
@@ -86,9 +87,9 @@ static ULONG STDMETHODCALLTYPE d2d_factory_AddRef(ID2D1Factory *iface)
return refcount;
}
-static ULONG STDMETHODCALLTYPE d2d_factory_Release(ID2D1Factory *iface)
+static ULONG STDMETHODCALLTYPE d2d_factory_Release(ID2D1Factory1 *iface)
{
- struct d2d_factory *factory = impl_from_ID2D1Factory(iface);
+ struct d2d_factory *factory = impl_from_ID2D1Factory1(iface);
ULONG refcount = InterlockedDecrement(&factory->refcount);
TRACE("%p decreasing refcount to %u.\n", iface, refcount);
@@ -103,18 +104,18 @@ static ULONG STDMETHODCALLTYPE d2d_factory_Release(ID2D1Factory *iface)
return refcount;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_ReloadSystemMetrics(ID2D1Factory *iface)
+static HRESULT STDMETHODCALLTYPE d2d_factory_ReloadSystemMetrics(ID2D1Factory1 *iface)
{
- struct d2d_factory *factory = impl_from_ID2D1Factory(iface);
+ struct d2d_factory *factory = impl_from_ID2D1Factory1(iface);
TRACE("iface %p.\n", iface);
return d2d_factory_reload_sysmetrics(factory);
}
-static void STDMETHODCALLTYPE d2d_factory_GetDesktopDpi(ID2D1Factory *iface, float *dpi_x, float *dpi_y)
+static void STDMETHODCALLTYPE d2d_factory_GetDesktopDpi(ID2D1Factory1 *iface, float *dpi_x, float *dpi_y)
{
- struct d2d_factory *factory = impl_from_ID2D1Factory(iface);
+ struct d2d_factory *factory = impl_from_ID2D1Factory1(iface);
TRACE("iface %p, dpi_x %p, dpi_y %p.\n", iface, dpi_x, dpi_y);
@@ -122,7 +123,7 @@ static void STDMETHODCALLTYPE d2d_factory_GetDesktopDpi(ID2D1Factory *iface, flo
*dpi_y = factory->dpi_y;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRectangleGeometry(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRectangleGeometry(ID2D1Factory1 *iface,
const D2D1_RECT_F *rect, ID2D1RectangleGeometry **geometry)
{
struct d2d_geometry *object;
@@ -133,7 +134,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRectangleGeometry(ID2D1Factor
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
return E_OUTOFMEMORY;
- if (FAILED(hr = d2d_rectangle_geometry_init(object, iface, rect)))
+ if (FAILED(hr = d2d_rectangle_geometry_init(object, (ID2D1Factory *)iface, rect)))
{
WARN("Failed to initialize rectangle geometry, hr %#x.\n", hr);
HeapFree(GetProcessHeap(), 0, object);
@@ -146,7 +147,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRectangleGeometry(ID2D1Factor
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRoundedRectangleGeometry(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRoundedRectangleGeometry(ID2D1Factory1 *iface,
const D2D1_ROUNDED_RECT *rect, ID2D1RoundedRectangleGeometry **geometry)
{
FIXME("iface %p, rect %p, geometry %p stub!\n", iface, rect, geometry);
@@ -154,7 +155,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRoundedRectangleGeometry(ID2D
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateEllipseGeometry(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateEllipseGeometry(ID2D1Factory1 *iface,
const D2D1_ELLIPSE *ellipse, ID2D1EllipseGeometry **geometry)
{
FIXME("iface %p, ellipse %p, geometry %p stub!\n", iface, ellipse, geometry);
@@ -162,7 +163,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateEllipseGeometry(ID2D1Factory
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateGeometryGroup(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateGeometryGroup(ID2D1Factory1 *iface,
D2D1_FILL_MODE fill_mode, ID2D1Geometry **geometries, UINT32 geometry_count, ID2D1GeometryGroup **group)
{
FIXME("iface %p, fill_mode %#x, geometries %p, geometry_count %u, group %p stub!\n",
@@ -171,7 +172,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateGeometryGroup(ID2D1Factory *i
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateTransformedGeometry(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateTransformedGeometry(ID2D1Factory1 *iface,
ID2D1Geometry *src_geometry, const D2D1_MATRIX_3X2_F *transform,
ID2D1TransformedGeometry **transformed_geometry)
{
@@ -183,7 +184,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateTransformedGeometry(ID2D1Fact
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
return E_OUTOFMEMORY;
- d2d_transformed_geometry_init(object, iface, src_geometry, transform);
+ d2d_transformed_geometry_init(object, (ID2D1Factory *)iface, src_geometry, transform);
TRACE("Created transformed geometry %p.\n", object);
*transformed_geometry = (ID2D1TransformedGeometry *)&object->ID2D1Geometry_iface;
@@ -191,7 +192,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateTransformedGeometry(ID2D1Fact
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry(ID2D1Factory *iface, ID2D1PathGeometry **geometry)
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry(ID2D1Factory1 *iface, ID2D1PathGeometry **geometry)
{
struct d2d_geometry *object;
@@ -200,7 +201,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry(ID2D1Factory *if
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
return E_OUTOFMEMORY;
- d2d_path_geometry_init(object, iface);
+ d2d_path_geometry_init(object, (ID2D1Factory *)iface);
TRACE("Created path geometry %p.\n", object);
*geometry = (ID2D1PathGeometry *)&object->ID2D1Geometry_iface;
@@ -208,7 +209,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry(ID2D1Factory *if
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateStrokeStyle(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateStrokeStyle(ID2D1Factory1 *iface,
const D2D1_STROKE_STYLE_PROPERTIES *desc, const float *dashes, UINT32 dash_count,
ID2D1StrokeStyle **stroke_style)
{
@@ -221,7 +222,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateStrokeStyle(ID2D1Factory *ifa
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
return E_OUTOFMEMORY;
- if (FAILED(hr = d2d_stroke_style_init(object, iface, desc, dashes, dash_count)))
+ if (FAILED(hr = d2d_stroke_style_init(object, (ID2D1Factory *)iface, desc, dashes, dash_count)))
{
WARN("Failed to initialize stroke style, hr %#x.\n", hr);
HeapFree(GetProcessHeap(), 0, object);
@@ -234,7 +235,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateStrokeStyle(ID2D1Factory *ifa
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDrawingStateBlock(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDrawingStateBlock(ID2D1Factory1 *iface,
const D2D1_DRAWING_STATE_DESCRIPTION *desc, IDWriteRenderingParams *text_rendering_params,
ID2D1DrawingStateBlock **state_block)
{
@@ -246,7 +247,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDrawingStateBlock(ID2D1Factor
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
return E_OUTOFMEMORY;
- d2d_state_block_init(object, iface, desc, text_rendering_params);
+ d2d_state_block_init(object, (ID2D1Factory *)iface, desc, text_rendering_params);
TRACE("Created state block %p.\n", object);
*state_block = &object->ID2D1DrawingStateBlock_iface;
@@ -266,10 +267,10 @@ static HRESULT d2d_factory_get_device(struct d2d_factory *factory, ID3D10Device1
return hr;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateWicBitmapRenderTarget(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateWicBitmapRenderTarget(ID2D1Factory1 *iface,
IWICBitmap *target, const D2D1_RENDER_TARGET_PROPERTIES *desc, ID2D1RenderTarget **render_target)
{
- struct d2d_factory *factory = impl_from_ID2D1Factory(iface);
+ struct d2d_factory *factory = impl_from_ID2D1Factory1(iface);
struct d2d_wic_render_target *object;
ID3D10Device1 *device;
HRESULT hr;
@@ -285,7 +286,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateWicBitmapRenderTarget(ID2D1Fa
return hr;
}
- if (FAILED(hr = d2d_wic_render_target_init(object, iface, device, target, desc)))
+ if (FAILED(hr = d2d_wic_render_target_init(object, (ID2D1Factory *)iface, device, target, desc)))
{
WARN("Failed to initialize render target, hr %#x.\n", hr);
HeapFree(GetProcessHeap(), 0, object);
@@ -298,11 +299,11 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateWicBitmapRenderTarget(ID2D1Fa
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateHwndRenderTarget(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateHwndRenderTarget(ID2D1Factory1 *iface,
const D2D1_RENDER_TARGET_PROPERTIES *desc, const D2D1_HWND_RENDER_TARGET_PROPERTIES *hwnd_rt_desc,
ID2D1HwndRenderTarget **render_target)
{
- struct d2d_factory *factory = impl_from_ID2D1Factory(iface);
+ struct d2d_factory *factory = impl_from_ID2D1Factory1(iface);
struct d2d_hwnd_render_target *object;
ID3D10Device1 *device;
HRESULT hr;
@@ -315,7 +316,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateHwndRenderTarget(ID2D1Factory
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
return E_OUTOFMEMORY;
- if (FAILED(hr = d2d_hwnd_render_target_init(object, iface, device, desc, hwnd_rt_desc)))
+ if (FAILED(hr = d2d_hwnd_render_target_init(object, (ID2D1Factory *)iface, device, desc, hwnd_rt_desc)))
{
WARN("Failed to initialize render target, hr %#x.\n", hr);
HeapFree(GetProcessHeap(), 0, object);
@@ -328,18 +329,18 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateHwndRenderTarget(ID2D1Factory
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDxgiSurfaceRenderTarget(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDxgiSurfaceRenderTarget(ID2D1Factory1 *iface,
IDXGISurface *surface, const D2D1_RENDER_TARGET_PROPERTIES *desc, ID2D1RenderTarget **render_target)
{
TRACE("iface %p, surface %p, desc %p, render_target %p.\n", iface, surface, desc, render_target);
- return d2d_d3d_create_render_target(iface, surface, NULL, desc, render_target);
+ return d2d_d3d_create_render_target((ID2D1Factory *)iface, surface, NULL, desc, render_target);
}
-static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDCRenderTarget(ID2D1Factory *iface,
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDCRenderTarget(ID2D1Factory1 *iface,
const D2D1_RENDER_TARGET_PROPERTIES *desc, ID2D1DCRenderTarget **render_target)
{
- struct d2d_factory *factory = impl_from_ID2D1Factory(iface);
+ struct d2d_factory *factory = impl_from_ID2D1Factory1(iface);
struct d2d_dc_render_target *object;
ID3D10Device1 *device;
HRESULT hr;
@@ -352,7 +353,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDCRenderTarget(ID2D1Factory *
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
return E_OUTOFMEMORY;
- if (FAILED(hr = d2d_dc_render_target_init(object, iface, device, desc)))
+ if (FAILED(hr = d2d_dc_render_target_init(object, (ID2D1Factory *)iface, device, desc)))
{
WARN("Failed to initialize render target, hr %#x.\n", hr);
HeapFree(GetProcessHeap(), 0, object);
@@ -365,7 +366,94 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDCRenderTarget(ID2D1Factory *
return S_OK;
}
-static const struct ID2D1FactoryVtbl d2d_factory_vtbl =
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDevice(ID2D1Factory1 *iface,
+ IDXGIDevice *dxgi_device, ID2D1Device **device)
+{
+ FIXME("iface %p, dxgi_device %p, device %p stub!\n", iface, dxgi_device, device);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateStrokeStyle1(ID2D1Factory1 *iface,
+ const D2D1_STROKE_STYLE_PROPERTIES1 *desc, const float *dashes, UINT32 dash_count,
+ ID2D1StrokeStyle1 **stroke_style)
+{
+ FIXME("iface %p, desc %p, dashes %p, dash_count %u, stroke_style %p stub!\n",
+ iface, desc, dashes, dash_count, stroke_style);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry1(ID2D1Factory1 *iface, ID2D1PathGeometry1 **geometry)
+{
+ FIXME("iface %p, geometry %p stub!\n", iface, geometry);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateDrawingStateBlock1(ID2D1Factory1 *iface,
+ const D2D1_DRAWING_STATE_DESCRIPTION1 *desc, IDWriteRenderingParams *text_rendering_params,
+ ID2D1DrawingStateBlock1 **state_block)
+{
+ FIXME("iface %p, desc %p, text_rendering_params %p, state_block %p stub!\n",
+ iface, desc, text_rendering_params, state_block);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE d2d_factory_CreateGdiMetafile(ID2D1Factory1 *iface,
+ IStream *stream, ID2D1GdiMetafile **metafile)
+{
+ FIXME("iface %p, stream %p, metafile %p stub!\n", iface, stream, metafile);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE d2d_factory_RegisterEffectFromStream(ID2D1Factory1 *iface,
+ REFCLSID effect_id, IStream *property_xml, const D2D1_PROPERTY_BINDING *bindings,
+ UINT32 binding_count, PD2D1_EFFECT_FACTORY effect_factory)
+{
+ FIXME("iface %p, effect_id %s, property_xml %p, bindings %p, binding_count %u, effect_factory %p stub!\n",
+ iface, debugstr_guid(effect_id), property_xml, bindings, binding_count, effect_factory);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE d2d_factory_RegisterEffectFromString(ID2D1Factory1 *iface,
+ REFCLSID effect_id, const WCHAR *property_xml, const D2D1_PROPERTY_BINDING *bindings,
+ UINT32 binding_count, PD2D1_EFFECT_FACTORY effect_factory)
+{
+ FIXME("iface %p, effect_id %s, property_xml %s, bindings %p, binding_count %u, effect_factory %p stub!\n",
+ iface, debugstr_guid(effect_id), debugstr_w(property_xml), bindings, binding_count, effect_factory);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE d2d_factory_UnregisterEffect(ID2D1Factory1 *iface, REFCLSID effect_id)
+{
+ FIXME("iface %p, effect_id %s stub!\n", iface, debugstr_guid(effect_id));
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE d2d_factory_GetRegisteredEffects(ID2D1Factory1 *iface,
+ CLSID *effects, UINT32 effect_count, UINT32 *returned, UINT32 *registered)
+{
+ FIXME("iface %p, effects %p, effect_count %u, returned %p, registered %p stub!\n",
+ iface, effects, effect_count, returned, registered);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE d2d_factory_GetEffectProperties(ID2D1Factory1 *iface,
+ REFCLSID effect_id, ID2D1Properties **props)
+{
+ FIXME("iface %p, effect_id %s, props %p stub!\n", iface, debugstr_guid(effect_id), props);
+
+ return E_NOTIMPL;
+}
+
+static const struct ID2D1Factory1Vtbl d2d_factory_vtbl =
{
d2d_factory_QueryInterface,
d2d_factory_AddRef,
@@ -384,6 +472,16 @@ static const struct ID2D1FactoryVtbl d2d_factory_vtbl =
d2d_factory_CreateHwndRenderTarget,
d2d_factory_CreateDxgiSurfaceRenderTarget,
d2d_factory_CreateDCRenderTarget,
+ d2d_factory_CreateDevice,
+ d2d_factory_CreateStrokeStyle1,
+ d2d_factory_CreatePathGeometry1,
+ d2d_factory_CreateDrawingStateBlock1,
+ d2d_factory_CreateGdiMetafile,
+ d2d_factory_RegisterEffectFromStream,
+ d2d_factory_RegisterEffectFromString,
+ d2d_factory_UnregisterEffect,
+ d2d_factory_GetRegisteredEffects,
+ d2d_factory_GetEffectProperties,
};
static void d2d_factory_init(struct d2d_factory *factory, D2D1_FACTORY_TYPE factory_type,
@@ -394,7 +492,7 @@ static void d2d_factory_init(struct d2d_factory *factory, D2D1_FACTORY_TYPE fact
if (factory_options && factory_options->debugLevel != D2D1_DEBUG_LEVEL_NONE)
WARN("Ignoring debug level %#x.\n", factory_options->debugLevel);
- factory->ID2D1Factory_iface.lpVtbl = &d2d_factory_vtbl;
+ factory->ID2D1Factory1_iface.lpVtbl = &d2d_factory_vtbl;
factory->refcount = 1;
d2d_factory_reload_sysmetrics(factory);
}
@@ -415,8 +513,8 @@ HRESULT WINAPI D2D1CreateFactory(D2D1_FACTORY_TYPE factory_type, REFIID iid,
TRACE("Created factory %p.\n", object);
- hr = ID2D1Factory_QueryInterface(&object->ID2D1Factory_iface, iid, factory);
- ID2D1Factory_Release(&object->ID2D1Factory_iface);
+ hr = ID2D1Factory1_QueryInterface(&object->ID2D1Factory1_iface, iid, factory);
+ ID2D1Factory1_Release(&object->ID2D1Factory1_iface);
return hr;
}
diff --git a/dlls/uuid/d2d.c b/dlls/uuid/d2d.c
index dbe143e..d2cf6db 100644
--- a/dlls/uuid/d2d.c
+++ b/dlls/uuid/d2d.c
@@ -18,4 +18,4 @@
#include "d3d10_1.h"
#include "initguid.h"
-#include "d2d1.h"
+#include "d2d1_1.h"
diff --git a/include/d2d1_1.idl b/include/d2d1_1.idl
new file mode 100644
index 0000000..1fbbb30
--- /dev/null
+++ b/include/d2d1_1.idl
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2017 Lucian Poston
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "d2d1.idl";
+
+interface ID2D1Device;
+interface ID2D1StrokeStyle1;
+interface ID2D1PathGeometry1;
+interface ID2D1DrawingStateBlock1;
+interface ID2D1GdiMetafile;
+interface ID2D1Properties;
+
+typedef enum D2D1_STROKE_TRANSFORM_TYPE
+{
+ D2D1_STROKE_TRANSFORM_TYPE_NORMAL = 0x0,
+ D2D1_STROKE_TRANSFORM_TYPE_FIXED = 0x1,
+ D2D1_STROKE_TRANSFORM_TYPE_HAIRLINE = 0x2,
+ D2D1_STROKE_TRANSFORM_TYPE_FORCE_DWORD = 0xffffffff,
+} D2D1_STROKE_TRANSFORM_TYPE;
+
+typedef enum D2D1_PRIMITIVE_BLEND
+{
+ D2D1_PRIMITIVE_BLEND_SOURCE_OVER = 0x0,
+ D2D1_PRIMITIVE_BLEND_COPY = 0x1,
+ D2D1_PRIMITIVE_BLEND_MIN = 0x2,
+ D2D1_PRIMITIVE_BLEND_ADD = 0x3,
+ D2D1_PRIMITIVE_BLEND_MAX = 0x4,
+ D2D1_PRIMITIVE_BLEND_FORCE_DWORD = 0xffffffff,
+} D2D1_PRIMITIVE_BLEND;
+
+typedef enum D2D1_UNIT_MODE
+{
+ D2D1_UNIT_MODE_DIPS = 0x0,
+ D2D1_UNIT_MODE_PIXELS = 0x1,
+ D2D1_UNIT_MODE_FORCE_DWORD = 0xffffffff,
+} D2D1_UNIT_MODE;
+
+typedef struct D2D1_PROPERTY_BINDING D2D1_PROPERTY_BINDING;
+
+typedef struct D2D1_STROKE_STYLE_PROPERTIES1
+{
+ D2D1_CAP_STYLE startCap;
+ D2D1_CAP_STYLE endCap;
+ D2D1_CAP_STYLE dashCap;
+ D2D1_LINE_JOIN lineJoin;
+ float miterLimit;
+ D2D1_DASH_STYLE dashStyle;
+ float dashOffset;
+ D2D1_STROKE_TRANSFORM_TYPE transformType;
+} D2D1_STROKE_STYLE_PROPERTIES1;
+
+typedef struct D2D1_DRAWING_STATE_DESCRIPTION1
+{
+ D2D1_ANTIALIAS_MODE antialiasMode;
+ D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode;
+ D2D1_TAG tag1;
+ D2D1_TAG tag2;
+ D2D1_MATRIX_3X2_F transform;
+ D2D1_PRIMITIVE_BLEND primitiveBlend;
+ D2D1_UNIT_MODE unitMode;
+} D2D1_DRAWING_STATE_DESCRIPTION1;
+
+typedef HRESULT (__stdcall *PD2D1_EFFECT_FACTORY)(IUnknown **effect);
+
+[
+ object,
+ uuid(bb12d362-daee-4b9a-aa1d-14ba401cfa1f),
+ local,
+]
+interface ID2D1Factory1 : ID2D1Factory
+{
+ HRESULT CreateDevice(
+ [in] IDXGIDevice *dxgi_device,
+ [out] ID2D1Device **device
+ );
+ HRESULT CreateStrokeStyle(
+ [in] const D2D1_STROKE_STYLE_PROPERTIES1 *desc,
+ [in, size_is(dash_count)] const float *dashes,
+ [in] UINT32 dash_count,
+ [out] ID2D1StrokeStyle1 **stroke_style
+ );
+ HRESULT CreatePathGeometry(
+ [out] ID2D1PathGeometry1 **geometry
+ );
+ HRESULT CreateDrawingStateBlock(
+ [in] const D2D1_DRAWING_STATE_DESCRIPTION1 *desc,
+ [in] IDWriteRenderingParams *text_rendering_params,
+ [out] ID2D1DrawingStateBlock1 **state_block
+ );
+ HRESULT CreateGdiMetafile(
+ [in] IStream *stream,
+ [out] ID2D1GdiMetafile **metafile
+ );
+ HRESULT RegisterEffectFromStream(
+ [in] REFCLSID effect_id,
+ [in] IStream *property_xml,
+ [in, size_is(binding_count)] const D2D1_PROPERTY_BINDING *bindings,
+ [in] UINT32 binding_count,
+ [in] PD2D1_EFFECT_FACTORY effect_factory
+ );
+ HRESULT RegisterEffectFromString(
+ [in] REFCLSID effect_id,
+ [in] const WCHAR *property_xml,
+ [in, size_is(binding_count)] const D2D1_PROPERTY_BINDING *bindings,
+ [in] UINT32 binding_count,
+ [in] PD2D1_EFFECT_FACTORY effect_factory
+ );
+ HRESULT UnregisterEffect(
+ [in] REFCLSID effect_id
+ );
+ HRESULT GetRegisteredEffects(
+ [out, size_is(effect_count)] CLSID *effects,
+ [in] UINT32 effect_count,
+ [out] UINT32 *returned,
+ [out] UINT32 *registered
+ );
+ HRESULT GetEffectProperties(
+ [in] REFCLSID effect_id,
+ [out] ID2D1Properties **props
+ );
+}
--
2.1.4
1
0
05 Dec '17
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
dlls/ddraw/tests/ddraw1.c | 8 +++++---
dlls/ddraw/tests/ddraw2.c | 8 +++++---
dlls/ddraw/tests/ddraw4.c | 8 +++++---
dlls/ddraw/tests/ddraw7.c | 8 +++++---
4 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index 5ab1c80..c306c4d 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -2281,9 +2281,9 @@ static void test_redundant_mode_set(void)
{
DDSURFACEDESC surface_desc = {0};
IDirectDraw *ddraw;
+ RECT q, r, s;
HWND window;
HRESULT hr;
- RECT r, s;
ULONG ref;
window = CreateWindowA("static", "ddraw_test", WS_OVERLAPPEDWINDOW,
@@ -2302,7 +2302,8 @@ static void test_redundant_mode_set(void)
U1(surface_desc.ddpfPixelFormat).dwRGBBitCount);
ok(SUCCEEDED(hr), "SetDisplayMode failed, hr %#x.\n", hr);
- GetWindowRect(window, &r);
+ GetWindowRect(window, &q);
+ r = q;
r.right /= 2;
r.bottom /= 2;
SetWindowPos(window, HWND_TOP, r.left, r.top, r.right, r.bottom, 0);
@@ -2314,7 +2315,8 @@ static void test_redundant_mode_set(void)
ok(SUCCEEDED(hr), "SetDisplayMode failed, hr %#x.\n", hr);
GetWindowRect(window, &s);
- ok(EqualRect(&r, &s), "Expected %s, got %s.\n", wine_dbgstr_rect(&r), wine_dbgstr_rect(&s));
+ ok(EqualRect(&r, &s) || broken(EqualRect(&q, &s) /* Windows 10 */),
+ "Expected %s, got %s.\n", wine_dbgstr_rect(&r), wine_dbgstr_rect(&s));
ref = IDirectDraw_Release(ddraw);
ok(ref == 0, "The ddraw object was not properly freed: refcount %u.\n", ref);
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index ca349be..8a7801e 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -2414,9 +2414,9 @@ static void test_redundant_mode_set(void)
{
DDSURFACEDESC surface_desc = {0};
IDirectDraw2 *ddraw;
+ RECT q, r, s;
HWND window;
HRESULT hr;
- RECT r, s;
ULONG ref;
window = CreateWindowA("static", "ddraw_test", WS_OVERLAPPEDWINDOW,
@@ -2435,7 +2435,8 @@ static void test_redundant_mode_set(void)
U1(surface_desc.ddpfPixelFormat).dwRGBBitCount, 0, 0);
ok(SUCCEEDED(hr), "SetDisplayMode failed, hr %#x.\n", hr);
- GetWindowRect(window, &r);
+ GetWindowRect(window, &q);
+ r = q;
r.right /= 2;
r.bottom /= 2;
SetWindowPos(window, HWND_TOP, r.left, r.top, r.right, r.bottom, 0);
@@ -2447,7 +2448,8 @@ static void test_redundant_mode_set(void)
ok(SUCCEEDED(hr), "SetDisplayMode failed, hr %#x.\n", hr);
GetWindowRect(window, &s);
- ok(EqualRect(&r, &s), "Expected %s, got %s.\n", wine_dbgstr_rect(&r), wine_dbgstr_rect(&s));
+ ok(EqualRect(&r, &s) || broken(EqualRect(&q, &s) /* Windows 10 */),
+ "Expected %s, got %s.\n", wine_dbgstr_rect(&r), wine_dbgstr_rect(&s));
ref = IDirectDraw2_Release(ddraw);
ok(ref == 0, "The ddraw object was not properly freed: refcount %u.\n", ref);
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index bad06ea..048331d 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -2552,9 +2552,9 @@ static void test_redundant_mode_set(void)
{
DDSURFACEDESC2 surface_desc = {0};
IDirectDraw4 *ddraw;
+ RECT q, r, s;
HWND window;
HRESULT hr;
- RECT r, s;
ULONG ref;
window = CreateWindowA("static", "ddraw_test", WS_OVERLAPPEDWINDOW,
@@ -2573,7 +2573,8 @@ static void test_redundant_mode_set(void)
U1(U4(surface_desc).ddpfPixelFormat).dwRGBBitCount, 0, 0);
ok(SUCCEEDED(hr), "SetDisplayMode failed, hr %#x.\n", hr);
- GetWindowRect(window, &r);
+ GetWindowRect(window, &q);
+ r = q;
r.right /= 2;
r.bottom /= 2;
SetWindowPos(window, HWND_TOP, r.left, r.top, r.right, r.bottom, 0);
@@ -2585,7 +2586,8 @@ static void test_redundant_mode_set(void)
ok(SUCCEEDED(hr), "SetDisplayMode failed, hr %#x.\n", hr);
GetWindowRect(window, &s);
- ok(EqualRect(&r, &s), "Expected %s, got %s.\n", wine_dbgstr_rect(&r), wine_dbgstr_rect(&s));
+ ok(EqualRect(&r, &s) || broken(EqualRect(&q, &s) /* Windows 10 */),
+ "Expected %s, got %s.\n", wine_dbgstr_rect(&r), wine_dbgstr_rect(&s));
ref = IDirectDraw4_Release(ddraw);
ok(ref == 0, "The ddraw object was not properly freed: refcount %u.\n", ref);
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 5e176c7..d1ff85d 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -2279,9 +2279,9 @@ static void test_redundant_mode_set(void)
{
DDSURFACEDESC2 surface_desc = {0};
IDirectDraw7 *ddraw;
+ RECT q, r, s;
HWND window;
HRESULT hr;
- RECT r, s;
ULONG ref;
window = CreateWindowA("static", "ddraw_test", WS_OVERLAPPEDWINDOW,
@@ -2299,7 +2299,8 @@ static void test_redundant_mode_set(void)
U1(U4(surface_desc).ddpfPixelFormat).dwRGBBitCount, 0, 0);
ok(SUCCEEDED(hr), "SetDisplayMode failed, hr %#x.\n", hr);
- GetWindowRect(window, &r);
+ GetWindowRect(window, &q);
+ r = q;
r.right /= 2;
r.bottom /= 2;
SetWindowPos(window, HWND_TOP, r.left, r.top, r.right, r.bottom, 0);
@@ -2311,7 +2312,8 @@ static void test_redundant_mode_set(void)
ok(SUCCEEDED(hr), "SetDisplayMode failed, hr %#x.\n", hr);
GetWindowRect(window, &s);
- ok(EqualRect(&r, &s), "Expected %s, got %s.\n", wine_dbgstr_rect(&r), wine_dbgstr_rect(&s));
+ ok(EqualRect(&r, &s) || broken(EqualRect(&q, &s) /* Windows 10 */),
+ "Expected %s, got %s.\n", wine_dbgstr_rect(&r), wine_dbgstr_rect(&s));
ref = IDirectDraw7_Release(ddraw);
ok(ref == 0, "The ddraw object was not properly freed: refcount %u.\n", ref);
--
2.1.4
1
0
05 Dec '17
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
dlls/d3d10core/tests/device.c | 136 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 136 insertions(+)
diff --git a/dlls/d3d10core/tests/device.c b/dlls/d3d10core/tests/device.c
index 4228773..cdac5ec 100644
--- a/dlls/d3d10core/tests/device.c
+++ b/dlls/d3d10core/tests/device.c
@@ -13021,6 +13021,141 @@ static void test_stream_output_resume(void)
release_test_context(&test_context);
}
+static void test_format_compatibility(void)
+{
+ ID3D10Texture2D *dst_texture, *src_texture;
+ D3D10_SUBRESOURCE_DATA resource_data;
+ D3D10_TEXTURE2D_DESC texture_desc;
+ struct resource_readback rb;
+ DWORD colour, expected;
+ ID3D10Device *device;
+ unsigned int i, j;
+ ULONG refcount;
+ HRESULT hr;
+
+ static const struct
+ {
+ DXGI_FORMAT src_format;
+ DXGI_FORMAT dst_format;
+ size_t texel_size;
+ BOOL success;
+ }
+ test_data[] =
+ {
+ {DXGI_FORMAT_R8G8B8A8_TYPELESS, DXGI_FORMAT_R8G8B8A8_UNORM, 4, TRUE},
+ {DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, 4, TRUE},
+ {DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UINT, 4, TRUE},
+ {DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R8G8B8A8_SNORM, 4, TRUE},
+ {DXGI_FORMAT_R8G8B8A8_SNORM, DXGI_FORMAT_R8G8B8A8_SINT, 4, TRUE},
+ {DXGI_FORMAT_R8G8B8A8_SINT, DXGI_FORMAT_R8G8B8A8_TYPELESS, 4, TRUE},
+ {DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_B8G8R8A8_UNORM, 4, FALSE},
+ {DXGI_FORMAT_R8G8B8A8_UINT, DXGI_FORMAT_R16G16_UINT, 4, FALSE},
+ {DXGI_FORMAT_R16G16_TYPELESS, DXGI_FORMAT_R16G16_FLOAT, 4, TRUE},
+ {DXGI_FORMAT_R16G16_FLOAT, DXGI_FORMAT_R16G16_UNORM, 4, TRUE},
+ {DXGI_FORMAT_R16G16_UNORM, DXGI_FORMAT_R16G16_UINT, 4, TRUE},
+ {DXGI_FORMAT_R16G16_UINT, DXGI_FORMAT_R16G16_SNORM, 4, TRUE},
+ {DXGI_FORMAT_R16G16_SNORM, DXGI_FORMAT_R16G16_SINT, 4, TRUE},
+ {DXGI_FORMAT_R16G16_SINT, DXGI_FORMAT_R16G16_TYPELESS, 4, TRUE},
+ {DXGI_FORMAT_R16G16_TYPELESS, DXGI_FORMAT_R32_TYPELESS, 4, FALSE},
+ {DXGI_FORMAT_R32G32_TYPELESS, DXGI_FORMAT_R32G32_FLOAT, 8, TRUE},
+ {DXGI_FORMAT_R32G32_FLOAT, DXGI_FORMAT_R32G32_UINT, 8, TRUE},
+ {DXGI_FORMAT_R32G32_UINT, DXGI_FORMAT_R32G32_SINT, 8, TRUE},
+ {DXGI_FORMAT_R32G32_SINT, DXGI_FORMAT_R32G32_TYPELESS, 8, TRUE},
+ };
+ static const DWORD initial_data[16] = {0};
+ static const DWORD bitmap_data[] =
+ {
+ 0xff0000ff, 0xff00ffff, 0xff00ff00, 0xffffff00,
+ 0xffff0000, 0xffff00ff, 0xff000000, 0xff7f7f7f,
+ 0xffffffff, 0xffffffff, 0xffffffff, 0xff000000,
+ 0xffffffff, 0xff000000, 0xff000000, 0xff000000,
+ };
+
+ if (!(device = create_device()))
+ {
+ skip("Failed to create device.\n");
+ return;
+ }
+
+ texture_desc.Height = 4;
+ texture_desc.MipLevels = 1;
+ texture_desc.ArraySize = 1;
+ texture_desc.SampleDesc.Count = 1;
+ texture_desc.SampleDesc.Quality = 0;
+ texture_desc.BindFlags = D3D10_BIND_SHADER_RESOURCE;
+ texture_desc.CPUAccessFlags = 0;
+ texture_desc.MiscFlags = 0;
+
+ for (i = 0; i < ARRAY_SIZE(test_data); ++i)
+ {
+ unsigned int x, y, texel_dwords;
+ D3D10_BOX box;
+
+ texture_desc.Width = sizeof(bitmap_data) / (texture_desc.Height * test_data[i].texel_size);
+ texture_desc.Format = test_data[i].src_format;
+ texture_desc.Usage = D3D10_USAGE_IMMUTABLE;
+
+ resource_data.pSysMem = bitmap_data;
+ resource_data.SysMemPitch = texture_desc.Width * test_data[i].texel_size;
+ resource_data.SysMemSlicePitch = 0;
+
+ hr = ID3D10Device_CreateTexture2D(device, &texture_desc, &resource_data, &src_texture);
+ ok(SUCCEEDED(hr), "Failed to create source texture, hr %#x.\n", hr);
+
+ texture_desc.Format = test_data[i].dst_format;
+ texture_desc.Usage = D3D10_USAGE_DEFAULT;
+
+ resource_data.pSysMem = initial_data;
+
+ hr = ID3D10Device_CreateTexture2D(device, &texture_desc, &resource_data, &dst_texture);
+ if (FAILED(hr) && test_data[i].dst_format == DXGI_FORMAT_B8G8R8A8_UNORM)
+ {
+ skip("B8G8R8A8_UNORM not supported, skipping test.\n");
+ ID3D10Texture2D_Release(src_texture);
+ continue;
+ }
+ ok(SUCCEEDED(hr), "Failed to create destination texture, hr %#x.\n", hr);
+
+ set_box(&box, 0, 0, 0, texture_desc.Width - 1, texture_desc.Height - 1, 1);
+ ID3D10Device_CopySubresourceRegion(device, (ID3D10Resource *)dst_texture, 0, 1, 1, 0,
+ (ID3D10Resource *)src_texture, 0, &box);
+
+ texel_dwords = test_data[i].texel_size / sizeof(DWORD);
+ get_texture_readback(dst_texture, 0, &rb);
+ for (j = 0; j < ARRAY_SIZE(bitmap_data); ++j)
+ {
+ x = j % 4;
+ y = j / 4;
+ colour = get_readback_color(&rb, x, y);
+ expected = test_data[i].success && x >= texel_dwords && y
+ ? bitmap_data[j - (4 + texel_dwords)] : initial_data[j];
+ ok(colour == expected, "Test %u: Got unexpected colour 0x%08x at (%u, %u), expected 0x%08x.\n",
+ i, colour, x, y, expected);
+ }
+ release_resource_readback(&rb);
+
+ ID3D10Device_CopyResource(device, (ID3D10Resource *)dst_texture, (ID3D10Resource *)src_texture);
+
+ get_texture_readback(dst_texture, 0, &rb);
+ for (j = 0; j < ARRAY_SIZE(bitmap_data); ++j)
+ {
+ x = j % 4;
+ y = j / 4;
+ colour = get_readback_color(&rb, x, y);
+ expected = test_data[i].success ? bitmap_data[j] : initial_data[j];
+ ok(colour == expected, "Test %u: Got unexpected colour 0x%08x at (%u, %u), expected 0x%08x.\n",
+ i, colour, x, y, expected);
+ }
+ release_resource_readback(&rb);
+
+ ID3D10Texture2D_Release(dst_texture);
+ ID3D10Texture2D_Release(src_texture);
+ }
+
+ refcount = ID3D10Device_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+}
+
START_TEST(device)
{
test_feature_level();
@@ -13094,4 +13229,5 @@ START_TEST(device)
test_geometry_shader();
test_stream_output();
test_stream_output_resume();
+ test_format_compatibility();
}
--
2.1.4
1
0
05 Dec '17
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
dlls/mshtml/dispex.c | 3 ++-
dlls/mshtml/htmlevent.c | 16 ++++++++++++++--
dlls/mshtml/htmlevent.h | 1 +
dlls/mshtml/tests/events.js | 41 ++++++++++++++++++++++++++++++++++++++++-
4 files changed, 57 insertions(+), 4 deletions(-)
1
0