Module: wine
Branch: master
Commit: 0914e5ea76e065fd7bacb88a4bca3c804d240f1e
URL: https://source.winehq.org/git/wine.git/?a=commit;h=0914e5ea76e065fd7bacb88a…
Author: Henri Verbeet <hverbeet(a)codeweavers.com>
Date: Thu Feb 22 10:54:58 2018 +0330
usp10/tests: Cleanup test_ScriptTextOut2().
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
Signed-off-by: Aric Stewart <aric(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
dlls/usp10/tests/usp10.c | 96 ++++++++++++++++++++----------------------------
1 file changed, 39 insertions(+), 57 deletions(-)
diff --git a/dlls/usp10/tests/usp10.c b/dlls/usp10/tests/usp10.c
index 0cfe0a9..450c8ad 100644
--- a/dlls/usp10/tests/usp10.c
+++ b/dlls/usp10/tests/usp10.c
@@ -2717,23 +2717,19 @@ static void test_ScriptTextOut(HDC hdc)
ok(!psc, "Got unexpected psc %p.\n", psc);
}
+/* The intent is to validate that the DC passed into ScriptTextOut() is used
+ * instead of the (possibly) invalid cached one. */
static void test_ScriptTextOut2(HDC hdc)
{
-/* Intent is to validate that the HDC passed into ScriptTextOut is
- * used instead of the (possibly) invalid cached one
- */
HRESULT hr;
HDC hdc1, hdc2;
int cInChars;
- int cMaxItems;
SCRIPT_ITEM pItem[255];
int pcItems;
WCHAR TestItem1[] = {'T', 'e', 's', 't', 'a', 0};
SCRIPT_CACHE psc;
- int cChars;
- int cMaxGlyphs;
unsigned short pwOutGlyphs1[256];
WORD pwLogClust[256];
SCRIPT_VISATTR psva[256];
@@ -2741,67 +2737,53 @@ static void test_ScriptTextOut2(HDC hdc)
int piAdvance[256];
GOFFSET pGoffset[256];
ABC pABC[256];
+ BOOL ret;
- /* Create an extra DC that will be used until the ScriptTextOut */
+ /* Create an extra DC that will be used until the ScriptTextOut() call. */
hdc1 = CreateCompatibleDC(hdc);
- ok (hdc1 != 0, "CreateCompatibleDC failed to create a DC\n");
+ ok(!!hdc1, "Failed to create a DC.\n");
hdc2 = CreateCompatibleDC(hdc);
- ok (hdc2 != 0, "CreateCompatibleDC failed to create a DC\n");
+ ok(!!hdc2, "Failed to create a DC.\n");
- /* This is a valid test that will cause parsing to take place */
- cInChars = 5;
- cMaxItems = 255;
- hr = ScriptItemize(TestItem1, cInChars, cMaxItems, NULL, NULL, pItem, &pcItems);
- ok (hr == S_OK, "ScriptItemize should return S_OK, returned %08x\n", hr);
- /* This test is for the interim operation of ScriptItemize where only one SCRIPT_ITEM is *
- * returned. */
- ok (pcItems > 0, "The number of SCRIPT_ITEMS should be greater than 0\n");
- if (pcItems > 0)
- ok (pItem[0].iCharPos == 0 && pItem[1].iCharPos == cInChars,
- "Start pos not = 0 (%d) or end pos not = %d (%d)\n",
- pItem[0].iCharPos, cInChars, pItem[1].iCharPos);
+ /* This is a valid test that will cause parsing to take place. */
+ cInChars = lstrlenW(TestItem1);
+ hr = ScriptItemize(TestItem1, cInChars, ARRAY_SIZE(pItem), NULL, NULL, pItem, &pcItems);
+ ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+ /* This test is for the interim operation of ScriptItemize() where only
+ * one SCRIPT_ITEM is returned. */
+ ok(pcItems == 1, "Got unexpected item count %d.\n", pcItems);
+ ok(pItem[0].iCharPos == 0, "Got unexpected character position %d.\n", pItem[0].iCharPos);
+ ok(pItem[1].iCharPos == cInChars, "Got unexpected character position %d, expected %d.\n",
+ pItem[1].iCharPos, cInChars);
- /* It would appear that we have a valid SCRIPT_ANALYSIS and can continue
- * ie. ScriptItemize has succeeded and that pItem has been set */
- cInChars = 5;
- if (hr == S_OK) {
- psc = NULL; /* must be null on first call */
- cChars = cInChars;
- cMaxGlyphs = 256;
- hr = ScriptShape(hdc2, &psc, TestItem1, cChars,
- cMaxGlyphs, &pItem[0].a,
- pwOutGlyphs1, pwLogClust, psva, &pcGlyphs);
- ok (hr == S_OK, "ScriptShape should return S_OK not (%08x)\n", hr);
- ok (psc != NULL, "psc should not be null and have SCRIPT_CACHE buffer address\n");
- ok (pcGlyphs == cChars, "Chars in (%d) should equal Glyphs out (%d)\n", cChars, pcGlyphs);
- if (hr == S_OK) {
- BOOL ret;
+ psc = NULL;
+ hr = ScriptShape(hdc2, &psc, TestItem1, cInChars, ARRAY_SIZE(pwOutGlyphs1),
+ &pItem[0].a, pwOutGlyphs1, pwLogClust, psva, &pcGlyphs);
+ ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+ ok(!!psc, "Got unexpected psc %p.\n", psc);
+ ok(pcGlyphs == cInChars, "Got unexpected glyph count %d, expected %d.\n", pcGlyphs, cInChars);
- /* Note hdc is needed as glyph info is not yet in psc */
- hr = ScriptPlace(hdc2, &psc, pwOutGlyphs1, pcGlyphs, psva, &pItem[0].a, piAdvance,
- pGoffset, pABC);
- ok (hr == S_OK, "Should return S_OK not (%08x)\n", hr);
+ /* Note hdc is needed as glyph info is not yet in psc. */
+ hr = ScriptPlace(hdc2, &psc, pwOutGlyphs1, pcGlyphs,
+ psva, &pItem[0].a, piAdvance, pGoffset, pABC);
+ ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
- /* key part!!! cached dc is being deleted */
- ret = DeleteDC(hdc2);
- ok(ret, "DeleteDC should return 1 not %d\n", ret);
+ /* Key part! Cached DC is being deleted. */
+ ret = DeleteDC(hdc2);
+ ok(ret, "Got unexpected ret %#x.\n", ret);
- /* At this point the cached hdc (hdc2) has been destroyed,
- * however, we are passing in a *real* hdc (the original hdc).
- * The text should be written to that DC
- */
- hr = ScriptTextOut(hdc1, &psc, 0, 0, 0, NULL, &pItem[0].a, NULL, 0, pwOutGlyphs1, pcGlyphs,
- piAdvance, NULL, pGoffset);
- ok (hr == S_OK, "ScriptTextOut should return S_OK not (%08x)\n", hr);
- ok (psc != NULL, "psc should not be null and have SCRIPT_CACHE buffer address\n");
+ /* At this point the cached DC (hdc2) has been destroyed. However, we are
+ * passing in a *real* DC (the original DC). The text should be written to
+ * that DC. */
+ hr = ScriptTextOut(hdc1, &psc, 0, 0, 0, NULL, &pItem[0].a, NULL, 0,
+ pwOutGlyphs1, pcGlyphs, piAdvance, NULL, pGoffset);
+ ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+ ok(!!psc, "Got unexpected psc %p.\n", psc);
- DeleteDC(hdc1);
+ DeleteDC(hdc1);
- /* Clean up and go */
- ScriptFreeCache(&psc);
- ok( psc == NULL, "Expected psc to be NULL, got %p\n", psc);
- }
- }
+ ScriptFreeCache(&psc);
+ ok(!psc, "Got unexpected psc %p.\n", psc);
}
static void test_ScriptTextOut3(HDC hdc)
Module: tools
Branch: master
Commit: 50613666e1f1c7e5dbc17ad3012ff6fe65691be2
URL: https://source.winehq.org/git/tools.git/?a=commit;h=50613666e1f1c7e5dbc17ad…
Author: Francois Gouget <fgouget(a)codeweavers.com>
Date: Thu Feb 22 01:34:17 2018 +0100
testbot: Ensure we prepare the right future VM on startup.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
testbot/lib/WineTestBot/Jobs.pm | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/testbot/lib/WineTestBot/Jobs.pm b/testbot/lib/WineTestBot/Jobs.pm
index 56c903d..ae1e4ec 100644
--- a/testbot/lib/WineTestBot/Jobs.pm
+++ b/testbot/lib/WineTestBot/Jobs.pm
@@ -471,6 +471,7 @@ sub _GetSchedHost($$)
sleeping => 0,
running => 0,
dirty => 0,
+ dirtychild => 0,
MaxRevertingVMs => $MaxRevertingVMs,
MaxRevertsWhileRunningVMs => $MaxRevertsWhileRunningVMs,
MaxActiveVMs => $MaxActiveVMs,
@@ -604,6 +605,7 @@ sub _CheckAndClassifyVMs()
$Sched->{busyvms}->{$VMKey} = 1;
$Host->{$VM->Status}++;
$Host->{active}++;
+ $Host->{dirtychild}++ if ($VM->Status eq "dirty");
}
elsif ($VM->Status eq "sleeping")
{
@@ -1103,13 +1105,16 @@ sub _RevertVMs($$)
{
# Only start preparing VMs for future jobs on a host which is idle, i.e.
# which no longer has queued tasks (ignoring blocked ones).
- # Note that we could also check that the host only has idle VMs. This
- # would help ensure that we are not prevented from preparing the best VM
- # (e.g. build) on startup just because it is still being checked (i.e.
- # marked dirty). But during regular operation this would force the host
- # to go through an extra poweroff during which we lose track of which
- # VM is 'hot'
- if ($Host->{queued} != 0 or $Host->{MaxVMsWhenIdle} == 0)
+ # Note that during regular operation we get dirty VMs before they are
+ # assigned a process to shut them down. This makes it possible to pick
+ # the best future VM while we still know which VM is hot.
+ # In constrast on startup the dirty VMs all have processes checking their
+ # status, hence the dirtychild check to ensure we are not prevented from
+ # preparing the best VM (e.g. build): it delays preparing the future VMs
+ # until either there are no dirty VM or a VM got prepared for a task
+ # which means the host is not idle.
+ if ($Host->{queued} != 0 or $Host->{MaxVMsWhenIdle} == 0 or
+ ($Host->{active} and $Host->{active} == $Host->{dirtychild}))
{
# The TestBot is busy or does not prepare VMs when idle
next;
Module: website
Branch: master
Commit: d6a9ab3a34e1d24a43bd675759eceb2a816ac185
URL: https://source.winehq.org/git/website.git/?a=commit;h=d6a9ab3a34e1d24a43bd6…
Author: Julian Rüger <jr98(a)gmx.net>
Date: Tue Feb 20 11:06:28 2018 +0100
German translation for release 3.2
Signed-off-by: Julian Rüger <jr98(a)gmx.net>
Signed-off-by: Jeremy Newman <jnewman(a)codeweavers.com>
---
news/de/2018021601.xml | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/news/de/2018021601.xml b/news/de/2018021601.xml
new file mode 100644
index 0000000..83b67af
--- /dev/null
+++ b/news/de/2018021601.xml
@@ -0,0 +1,17 @@
+<news>
+<date>16. Februar 2018</date>
+<title>Wine 3.2 freigegeben</title>
+<body>
+<p> Die Entwicklungsversion 3.2 von Wine ist jetzt verfügbar.</p>
+<p> <a href="{$root}/announce/3.2">Neuerungen (en)</a> in dieser Version:</p>
+<ul>
+ <li>Separate Implementierung der USER-Kontrollelemente für ComCtl32 v6.</li>
+ <li>Unterstützung von Multisample-Texturen in Direct3D.</li>
+ <li>Unterstützung von HID-Gamepads.</li>
+ <li>Weitere Eventunterstützung in MSHTML.</li>
+ <li>Obsoleter DOS-Code wurde entfernt.</li>
+ <li>Diverse Fehlerkorrekturen.</li>
+</ul>
+<p>Der Quelltext ist ab sofort <a href="//dl.winehq.org/wine/source/3.x/wine-3.2.tar.xz">verfügbar</a>.
+Binärpakete werden gerade erstellt und stehen bald auf den jeweiligen <a href="{$root}/download">Downloadseiten</a> zur Verfügung.
+</p></body></news>