[PATCH 3/7] winmm/tests: Add basic video window tests.

Akihiro Sagawa wine at gitlab.winehq.org
Mon Jul 4 07:59:58 CDT 2022


From: Akihiro Sagawa <sagawa.aki at gmail.com>

Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
---
 dlls/winmm/tests/Makefile.in |   3 ++
 dlls/winmm/tests/mci.c       |  75 +++++++++++++++++++++++++++++++++++
 dlls/winmm/tests/rsrc.rc     |  25 ++++++++++++
 dlls/winmm/tests/test.mpg    | Bin 0 -> 12288 bytes
 4 files changed, 103 insertions(+)
 create mode 100644 dlls/winmm/tests/rsrc.rc
 create mode 100644 dlls/winmm/tests/test.mpg

diff --git a/dlls/winmm/tests/Makefile.in b/dlls/winmm/tests/Makefile.in
index 1b191cb5747..2b475dd89c3 100644
--- a/dlls/winmm/tests/Makefile.in
+++ b/dlls/winmm/tests/Makefile.in
@@ -12,3 +12,6 @@ C_SRCS = \
 	mmio.c \
 	timer.c \
 	wave.c
+
+RC_SRCS = \
+	rsrc.rc
diff --git a/dlls/winmm/tests/mci.c b/dlls/winmm/tests/mci.c
index 786c79ea783..57fd6932986 100644
--- a/dlls/winmm/tests/mci.c
+++ b/dlls/winmm/tests/mci.c
@@ -23,6 +23,7 @@
 #include "windows.h"
 #include "mmsystem.h"
 #include "mmreg.h"
+#include "digitalv.h"
 #include "wine/test.h"
 
 /* The tests use the MCI's own save capability to create the tempfile.wav to play.
@@ -37,6 +38,7 @@ typedef union {
       MCI_GETDEVCAPS_PARMS caps;
       MCI_SYSINFO_PARMSA  sys;
       MCI_SEEK_PARMS      seek;
+      MCI_DGV_OPEN_PARMSW dgv_open;
       MCI_GENERIC_PARMS   gen;
     } MCI_PARMS_UNION;
 
@@ -139,6 +141,31 @@ static BOOL spurious_message(LPMSG msg)
   return FALSE;
 }
 
+static WCHAR *load_resource(const WCHAR *name)
+{
+    static WCHAR pathW[MAX_PATH];
+    DWORD written;
+    HANDLE file;
+    HRSRC res;
+    void *ptr;
+
+    GetTempPathW(ARRAY_SIZE(pathW), pathW);
+    wcscat(pathW, name);
+
+    file = CreateFileW(pathW, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
+    ok(file != INVALID_HANDLE_VALUE, "Failed to create file %s, error %lu.\n",
+            wine_dbgstr_w(pathW), GetLastError());
+
+    res = FindResourceW(NULL, name, (LPCWSTR)RT_RCDATA);
+    ok(!!res, "Failed to load resource, error %lu.\n", GetLastError());
+    ptr = LockResource(LoadResource(GetModuleHandleA(NULL), res));
+    WriteFile(file, ptr, SizeofResource( GetModuleHandleA(NULL), res), &written, NULL);
+    ok(written == SizeofResource(GetModuleHandleA(NULL), res), "Failed to write resource.\n");
+    CloseHandle(file);
+
+    return pathW;
+}
+
 /* A single ok() in each code path allows us to prefix this with todo_wine */
 #define test_notification(hwnd, command, type) test_notification_dbg(hwnd, command, type, __LINE__)
 static void test_notification_dbg(HWND hwnd, const char* command, WPARAM type, int line)
@@ -1431,6 +1458,51 @@ static void test_threads(void)
     ok(mr == 0, "close gave: 0x%lx\n", mr);
 }
 
+static void test_video_window(HWND hwnd)
+{
+    const WCHAR *filename = load_resource(L"test.mpg");
+    MCI_PARMS_UNION parm;
+    MCIERROR err;
+    HWND video_window, parent;
+    MCIDEVICEID wDeviceID;
+    DWORD style, expected;
+    BOOL ret;
+
+    parm.dgv_open.lpstrDeviceType = (WCHAR *)L"MPEGVideo";
+    parm.dgv_open.lpstrElementName = (WCHAR *)filename;
+    parm.dgv_open.hWndParent = hwnd;
+    err = mciSendCommandW(0, MCI_OPEN,
+                          MCI_OPEN_ELEMENT | MCI_OPEN_TYPE | MCI_DGV_OPEN_PARENT,
+                          (DWORD_PTR)&parm);
+    ok(!err,"mciCommand open test.mpg type MPEGVideo returned %s\n", dbg_mcierr(err));
+    wDeviceID = parm.dgv_open.wDeviceID;
+
+    parm.status.dwItem = MCI_DGV_STATUS_HWND;
+    parm.status.dwReturn = 0xdeadbeef;
+    err = mciSendCommandW(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM, (DWORD_PTR)&parm);
+    todo_wine ok(!err,"mciCommand status hwnd returned %s\n", dbg_mcierr(err));
+    if (err)
+    {
+        skip("MCI_DGV_STATUS_HWND got an error\n");
+        goto close;
+    }
+    video_window = (HWND)parm.status.dwReturn;
+
+    ok(IsWindow(video_window), "video window %p doesn't exist.\n", video_window);
+    parent = GetWindow(video_window, GW_OWNER);
+    ok(hwnd == parent, "expected owner %p, got %p\n", hwnd, parent);
+    style = GetWindowLongW(video_window, GWL_STYLE);
+    expected = (WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_OVERLAPPEDWINDOW) & ~WS_MAXIMIZEBOX;
+    ok(style == expected, "expected style %08lx, got %08lx\n", expected, style);
+
+close:
+    err = mciSendCommandW(wDeviceID, MCI_CLOSE, 0, 0);
+    ok(!err,"mciCommand close returned %s\n", dbg_mcierr(err));
+
+    ret = DeleteFileW(filename);
+    ok(ret, "Failed to delete %s, error %lu.\n", debugstr_w(filename), GetLastError());
+}
+
 START_TEST(mci)
 {
     char curdir[MAX_PATH], tmpdir[MAX_PATH];
@@ -1455,6 +1527,9 @@ START_TEST(mci)
         test_asyncWaveTypeMpegvideo(hwnd);
     }else
         skip("No output devices available, skipping all output tests\n");
+
+    test_video_window(hwnd);
+
     /* Win9X hangs when exiting with something still open. */
     err = mciSendStringA("close all", NULL, 0, hwnd);
     ok(!err,"final close all returned %s\n", dbg_mcierr(err));
diff --git a/dlls/winmm/tests/rsrc.rc b/dlls/winmm/tests/rsrc.rc
new file mode 100644
index 00000000000..b5fde1c39ba
--- /dev/null
+++ b/dlls/winmm/tests/rsrc.rc
@@ -0,0 +1,25 @@
+/*
+ * Resource file for mci tests.
+ *
+ * Copyright 2022 Akihiro Sagawa
+ *
+ * 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
+ */
+
+#include "windef.h"
+
+/* ffmpeg -f lavfi -i smptebars -f lavfi -i "sine=frequency=1000" -t 0.16 -r 25 -f mpeg -vcodec mpeg1video -vf scale=32x24 -acodec mp2 test.mpg */
+/* @makedep: test.mpg */
+test.mpg RCDATA "test.mpg"
diff --git a/dlls/winmm/tests/test.mpg b/dlls/winmm/tests/test.mpg
new file mode 100644
index 0000000000000000000000000000000000000000..97bb1abae1d6f0676b9f9484b9847c587bb7dd89
GIT binary patch
literal 12288
zcmeHtX;>4<_il$>7C}K}QG=rbBC<vVMT58kL2yMzA)tha$|&F{xX?ibS43IDq7py^
z1tkKbxM70`2mvETjSOnQ2#D-!$kJW6aDM;$+~vc)AMSHMO`7ghcj&70sq?<)oVS7?
zq^I)`5<<$!xsM>EXNWdzsLTUxZJm{srtnIe%4<7B`9#SyM45gKo|h>hhWY at s8N&8s
zL<4b!?+Bs`Cg3|sf4DMswuZ42X-HccQDqtHuSY_zT3nsO>a$o7>uRXSTd20owsgOH
z?0x?0HP`R4SdlCXBu1kxxRR6|Hj23BA@}qSurw?GSjy5xW*|GekWa`bUCo6_)nBE9
zrn3<mqL@}$&r)`6?IS5wst4tLrD<DX4f7%%1Z~p0oK%0I?+PlD4kCMyN~JdS$`vXq
zh#u>Qn##+-sg-k+UA0~Z8ebhJZJb)|e)hK at 4TtzVaArzeu)%4!nJoY-RU*BfhqI_E
z=*vLly<@G$v}_im(wf9lbJcXUHw#Agk?16rw#RByO{7;d#na4uukw_~=>c;tHHJOV
zo4Q)Jmozb-NJi9h%2_I!*~;0gy%8H@(mo?&(p4kn1rJP+9U3dwnkutQbV#mml`Bn7
z8`{o2Y;sm~`Lt at dZF-h+9@}jpJC+srXeaY~WnF)aXw{srjijh4m3H%xKn=B5m2;2~
z<fL-;99AVs6In_+x8y1*J;-&Q(gkhpg|q#FU+#Ok-}%RD&p#*ULP at _;!@!jlp<x_o
zjx=Vgb|kynlP>69z3LV*omJ?1L^=1}jVn8p&aXaM?B!i|8~fCd?P`fU*0WcJpXn*H
z)B}yw%uTaRMzixb1(zx5d91tg+`=>vp(zD!P$r#6-WL6(q3#;5O^TX-S|3r1EicrV
z=^C5og#;r%NNqYSBj_ek+Tl@@2Xj~ylASiiG=B50?7y=A=sm!B_!F^279y`m4 at eu;
z5bdW(w({T{WS^3rj%&8|bfnjTwZ}^-ZYJ{Mtny#1mIV}r(L3WT&-U{hY>s*s61f`c
zm3GK#)*hu8W2HdLq>>;O^N%!-ca5Y?OPhpxdR8Q5Z9Sd(?B$hOEC<qC<v|@+*Q=I3
zGZrG<LsJ&m&Y7P>X0r_A7nJTWE7;rcX9o9o_#o%T;e!zHL2}B2^=ztif2bje6H13k
zg*GWFnr*I2%#c;cab!>%aX{>B5Kf+UiWjn9S?_J_YK`3S)&BDx!#9L+lO`Qc1&Pf^
zHj-G%5A@;#4M{%wNHFOxMcq|xqlHQh$&H5`RYd}`+-hdLqZ!jY+ at tI)Y6_nE`}~5D
zFPLCW;%NH$+235>9-Gf(V9nE5%_}QEs~^>Sm at K+9w{`8T6?$tP#NGX}RQcMR;E{92
zx3qoNzb&ydxVTq++PbxBwwp~lPOgkw-QeR_hk&5hTLLGYVS4(Gg)bH=oSg70RlIQY
zkMmAr)1Hwp>xCJS3cru<jmzqK7Je`$B&}xJPEg*@7d;lcIW@#?IqgIKOnhHM+Zix5
zcUh-;*8X$OpiHufrJj_Il6GaBPMp3dbH{HF`YjGy#)e=0^$2PI^#~V9h9`B&W54Ne
z23^n}zrMtUc}CWF)Y}kn!{@}cDI;fNYj&l7vdne=VzT73&$R`vPj}sOQA=JF>^pN`
z=3e at _!+XJ`H4sGjUwxhk9016Fx>7ziMc&?W{`#DgTUaa1H$8B=b^q0ruqW}X at Xf!y
z^*AW4TyD?qdJ&y+ES&P at kd_ZJ_!{2$LV2n#`1kd%1^%_bKNf(Ps8pBDLzIuG0=(^2
zZ({|okq?04HKNRNfdBF?ujbyDOQXl8`t$cipet{EoWppxlKIA;`R1Vciv;s`Hw)es
zljW5<XeN*lmBxsk4yzTQSEm6q+X7*olcC;HX{D}M0Rk83qK9>W>qZqKdtsYVAdSrV
z3PjX415*pr%ObLfBO-t0&ndsrn?wCZ7mM1BP3wb<$s7^&tLUrbQLF08&w0tqhAMCN
z4Bn1)*~YPQ2v2-PBUTH(u79N*&Mz5`y}5CUNshrx^x8u3L_JS-7{Ad|MFIw37EtTc
zXf}8)B|3<9qNA}Z_={*Zm<!B+roKt}%zNX+81aMXeDX-}bmj1!AFihY{MQ88(3bNy
z)h6?r5~szb$Gp&sU#UJ`V)#&FXd- at 5_MtW5YwT<!LhB%d=wxdyQ80+glyvVfj(?L3
zGI8C}%6TEO%Eo1YGiI)c7}#AscVXh-IqAS~S|nw|^wZNc9G|k*pM3Rgeyb|;6he2n
z+P<oJC88HOZT at GKquJ&)lE*((^+ZRequ0jd&$qb+tvX#reF!jW&F>YtFLyshUt-VE
zM<ObCc4#BOz$>hlw$gI#zNcs<_8fa^6ZSBT`f1@$PP at N_zl%iK!c#zs5UiP4$v;P+
zY4~uZd-V(5@*lc;X}O0p4~c41rk`O4FxZS#Do(~Zc$0nl9$bbgI5<_o$88igV8QeV
z&s$T6x}F{P$#D!7-an_=t#jmcqWSYT#kB$Bbryq$o|s+ZUmxFyszy%&5l*f3wJ$J{
zo}!l)Gcu{e;YNGnlD at xi-xPYur4sal9?&0}<sRVf4O?RH6a9{U2c!PSE-oAR+rTAb
zcZPcz&1th+`1$@+x0w}NUNy^4RXH8&T$j+>&nSETnjoL(Bd8rX<#}B?R^0=x`SEd(
zpL)~6Dpg#{%V0FxZ2&gF7Yuu3Ft8YNkOmHcWneKd2aR?w3$d8~uURe!K29?=p#;4=
z(E7)&`+HL#e0QBO<511>W-!3Kd_T*+YFG}uM*;bVPNw%q0zD*N3 at +bm2HDF`_uOL#
zUCP|Ux5uQI48`SR>|L3Gm<$lq2_PfO=y?5tl2_l^A0E1$9ct%Ytcc|9+9NeB^0t($
zbIZyx57n4$aoD%e<c>ovigw{3Q3gUzpEe>7NkPNMBMpAS-WwijCI*Y*=UZWz7H9!Y
zKx}n4-kI?M at W2O9iRgnyAmK9yN>`gFu5x*F|H|&IA(w=7;}#>2%q^!i{Wn~kW_SO%
z2_<KtaxvOP0JIALx}w2cEgDN~9aSs4%MxVlGOk}YWwkxeo>%f(MDPhdV5HIP7-?jJ
zOn4KzaNhuUHZgeAEsM=LYrZ at O#B~aHcPab8%-!QJKC9ym%Uo4c7UV3{5OQP{FcK at F
z0|fg08Ocu|L&;@shnv*W!!mZWhgxg~>L{;y^U*PM2$fJ8f-Xrq!5BJ>j!=iGLqKuW
zv&JOJJ8_ZtO<z|)c|cj3VNL1Un_n-P_<96$RNO3_R#!)L5gxHs1S*mO6bIV3EJJmL
zBVaGBz`oP{<(ty2HA3h7gAozDYH$lA1A(>!t%Xqsgn$FjuEAY|1z3nM4+ARr>XP5I
zv}dtU^>)%<0RQ%?x2dUdlH_nbL at BorzKR@nkMqMKg<(sDUJjV{!`1-pdPDDur%S_l
z!KXm)yGT!JksM7MAvog2ws%>Wc!FSN<TU^xj$xyY)ge1-BOU!Bt%^g>gq%Oj1(HPj
zxS6zzU;qq*A9|WX^TJFpiptR8prd|aSqBBCrfbD(PV@)`N2?{a?K(<tv0Rpf at +6PW
z!|4M!${np at r1jHl6qxbB=1iuX;D{7HHh!_7Q_HHH^2RS>?0rjK%Uy9DG+Ze<2Bhei
zn(Be%+-OWjRRD#5G~3ViLF-x#bqep1<NkZ?_gc>6V|i*RU8sydGYah|_yagqD3_Gh
zrydd$^!zk?=5+-CjgCVPfAC^Dw=t4|0`9Vkh=YQu2082Fw5T$w9F^S&{h90d9uOP?
zDDbhp3AR;E0!l+ at X6GlfR5h*TAucD`2TIpG$>Upxq7raS0;qBYgZ>Ouj}rX)m&y)&
z9IYE3t!Ah&@=c8G8yM{LJr-V$`znrFY|3$~Pom>w1xL~PBlITox(yJ)VQAJyduIjM
z*HapA?6=$fcA_j~<M}VotDj$8-nkPD>M`Z0P=+S<fV~IH<QZ~omNYig>Kj29$qqXI
z at ywPgw`_7Ksb{dcyQ|M~{e80GarXeQArc8@=J7j~v5BAn(811cEnPdmWin~DnIRDs
zXw0If+v_vT&Y*oS`$JKACKCs8K;@1>ob-bpg8ppmCd0=B*bEUCOU3LavZ8 at d<Qrl!
zYvQJv9{702=fKA-mr35Cf<V`m+m at SifdKG9&tS4vzM(PGp-Ja2#Fsg3bD-n?Gz+sO
zOFu3U`0Zh&666sAgN|OxlXRRRL>+R9&b at b3$q=xZ(S5wMgpG@^gAsm=Gx4(@7YUCY
z@}9fTCmB2gWgw$7+tvDl7?SA+ at U7>g)3=`ZzfE0r9KMttrHf)rSDi-g)`<F-D|hZJ
zs|Vx}fI|Q34U-R70h<X$Xo7wCe~<s^RS?SHjy-EFz1$uMXi|oh@#%1Ulkr$;&&}h1
zk3m3zZqW21;l<US2<X`3ptn>6x(4$7b_<O1*Eqa!4<D(SqOKG0fbwj6=C+rp47(-8
z%0~c4MDT3Ba9FAY^VVVty&F&yGQNS{`>9?or9<ohch~j{W$SuM+#>6)xg7*Qz)#St
zp%(pskqRcjAUYy>%bT^}taw|sir7~-Yn^UD>Dq-C!5Mv}fX*~<Z-@#5fJg?Yqg6Dc
zIC}F0nm^@sCZa~r-~3+j{Dd)%Nq{Wq9OaeM=IJUeg>h5FJTp&p1dN~~hi)CpiF}SJ
zFhHGPTnxG(?*bCa%kbNe>~>XgmKGf-2ozn&Q_I%}pWoU10OTQpS}wQ3PFNipP>AmR
z49uj<0Xod8ST`lrC{l&DgzeAX6;Q&vaJ<j$4A<Z73{`<nVAAq;b3)5M(g_hkSKy<J
z)Ou6Faur12^!MW?+rC#Nzb8yB>25G|a3}S?V at l9OoWKOQT=cx*`UL7NlD%=L$3cPA
z)p0!!G|pY0zL!m}x2QPM at v7oz)KI|FoYiy!#Zg=d8S~*UqXTb1hL~Znaj6oC(nR4m
zJ>R?&`QHhzc#`nK%DTcL_%36uE~9UH9ty*pk6DqQ8knl(c+1s60f9;Zb&LQ)IofE^
z at adgq)1uRuZx0}gBr)KF6utbs80Uj>n10*>MSu&28QU!U>}SDtImp{^cZ-E?i+zC0
zXPF;Ex-i7Bu at nQz3ERu!tvf7NI(b~%oFi%Cp_K at bf`JK;D8{Lc_vM%@)Raq*%Ox at V
zZW&;X;8<gU16~FIM5zEqz*aDH>*)R5vmZbe^!3K5r1@{#BhOi7EZ%W9-qG15>8k0J
zT6T1~bG3Tk#rNhWOCJnH+<J<3gG2>d2haj3fsH%jVoQcu$~$he931K==qwGOJECga
zs0AHc3O%n6?lOa=nlm(~|7v$n>+m?(!ltD+m(`_IYYSG)zK|c9zn3<a>3h;rdDLQQ
zk4!rgQ34WBpn&rR1QWnUGQhZ&s(qv34Shhtc{T?4&2ki#45ZfXfQXU8Fd#w4QK{Pn
zalPAlFo6z%(etAvJJy~s^W2p2ESkNOXERW#XHKaN&Ae at WKKA0U)^Mu3sOwG}T>*Fm
z=O at 9H;wWG7ve6uDO at GMTFcu?fRZtTLaZZ_pXqs<Bg$@C6BLy-P9336%a665`b4=Dz
zS#x~t$(#+#PbHftZ3*Qh`Gn=FC<FONnGq at Dw<o at ds$WX(eH0Q{H=vK8>JkD#G(^<M
zFGBD3f&qAx;BY4hZj&68mRSM<4x<p^bOndVar4QozlIT19N>nFTu(Xf$6~tPeZg#N
zA%Jm8BY!C~W8T3Z>m%DrcBr=xZtLn50J;o3lcLbcumOT+Rm#&dzLC^{)44by5-Ct_
z2Z6Wv5&)n8g+YK$aDYz^+_DoPa|7bCLG{^lT6D~w@%zJ)`jUE{b!N!q2CR)tvMREj
zj(nma5$A at 0jRNK4^i~*iCb at f{q&WCt?dBLhUk=WV;h1n7q|aYs%Y+`xfw=L8d|et`
z8hppc7m&d*;5lP8vg*WN-Gv|S_~aWBib$GYr at 65)^Y4BvKEv+Bk=F9tSJ<o701Sl#
zfC~S*6d+&A3X4wp{jCYLpc{uO3E|y?WBK}vGB?1a1cM;C1;YXclaV5!4IH!pl+M2?
zU$CL6^<77cJsJ~YILyn>D5K?PR1};Knt8B}KX=8&3Ck%SsF2{`lPQpm7{^4IWc}8R
z_>C=~d^83V<LIFtf_$$#HGLk;rbVC`ZbHzNXqDl3|0ZlTfp;~2(}eu6<sp3?MMs^j
zN(V$&O=m{4qm%urZP#6V(BAy529vHZppL;W2y`b9?{R|KTV~7sLgEVvz?V`veSlsx
zOmI54+Y%qZ1Z4g$&<=qzrfF=jEYTVaflko9=kB!bJ&$fW(%3gw%uco{AE>5 at X`Rv8
z&kp=$*|dH!A5&(;oQM$(11=742L%(zp^?Qfq8{1h(g2-TR6ZVqb<3~~qc77V9s?;V
z0V5D9qo}+tGfpFi0>;sCFfw=k+yzd%+Z)>(KHO#RlJr*33{4T(hu<!+eW&-ovs__e
zagl at nGJ#j5(Ep#bZdB~$RPl7h;nDUZ4G%w-Q!+Z5>|C!eD&_h|!pW0-Y9_q96%AhV
zX*Xy^5+CLT9-O?!TEBx4TeTMpCj+ma{qnIEdwn={TyVFxXm?hjH?(&*48C>nsct+@
z%A5UIID<X!+wG+9hStrjlyDcG-rTZREndlN-?BQR-Y{EQ5oX>=q?=`=FmLcOoR4}$
zNoN70(D+614%+Tp^h3^Wq*%nbaNuM%L6&=S;mw5)#gWh$Kj4*a&;fWtPvQ2S+cwrF
zUn>}vTf4xc6KASGcRnhsFnfLe!DnW0{tm`bM=EcS=%kHgxSlLdpZ7#;VRb*XlnX1b
zM9|TbcNdEF&4pthX;)yEF#bdRUpb!fkN#h&-Ve_zPPKua+z`?F=!d8jod60*apR!7
zY)hQF^@^*X<G<bL+0kPE99W;18u^0kmGJ_`RO2!6+mx!3zbg4+DKOV=reM;P&fkZ4
zwb5s6sj{HN1%*MeWviznhwH_>x|^DY=op;evF4>t0++urDNvx3n;ae9cGk%kNa`0y
zY_T$zlsTG^8 at 7E4N#V_Y$K4q2ll<!7)1QHj);nz^INErJmu{5%MyL4kTH97hy4hBM
z+t$cOrs{KdUQo$dPYFw&hbb at xDlKpRnWHw94v7SeQ75m+14<7z^UkNmuWPM7jKB3^
z1%t${G7p}X%S2~I%FGHM|D&~y_ic5 at P`Y at DZRC6}AeiC`1i=mYMyGk!_VvsR?#_xo
zg~d_BIc_<wR2(D73Loc8#u0A}MtUw}DGZPmsq+FJSNvIW<cFM=q at m<`z(L2+Q#s7O
zHZ)=vz+?x#E{>-=XxUzqqV%5S4FWAo*5~@;Z!eBBsEVrey(O;!aZb~5A9r_;Fvkr*
z8stLyJF<zHS=+(^iGT?i%LWV(9#;dN0%GFs(Nn<<4|d*MQj=h(8EJL7h{C}GVyogY
z382jy_#TdPlE-c+X^+{K7CGxY{E<Vm`TQ$!{q%iJoOAdz(>p$s^v47nV7Du``E~kr
z3ZR=$ZspL~eT#!$I)|6G_0l#6WmPn#y$rEHHc)D}H(6I0=p3Iq_4kU7goILF48Kke
zE^~pcgQum(&B)@69Xs$&!%jni_Uy+G+HKpHkG;3>Fz|+1!gX-{)Exbc&JKthG0cy}
zFvLF{!$5<<l8{Wgy4U&Ui)?55AD#-{%qWN-b=Bi{>{iEj&I}5f4%t<4LuYwVx=l+~
z(48<)yKAx0UMmhHzqjq%d#<+A!MC$Rx9G6rX7H(1&vfdAUN8m`Gyt#kfe$@bcDrxU
zlsxlkdN!lsd6Y$y*S?k}3*C&p0ZF+BAG{kC-aYeLaT&$NiA`qPZ5y?lL6MM%A5m#&
zG>W$Yy#kBF1=f}jJ4tb~GhD$a#D3S>pF%T{ALJ`3WT{a&RF}2I;X8-_ifrrpYhRr6
zy{PH-G1R#*TNO-kq$?`IZ)D$bj!XCLrwio(7Dc4mZSOkwYk{EhfmG<ymO&TT+nlx^
z7pEEKIJ=#Ld^<i#hlg%Ez1Pr&K*7<;;12OP+pHq+a9wTL7Tf=o{ECY6f2DX%LVpLL
z{}G|f*c<tnaJPgXP<?jmjm?#_oEhL8j`deqSdKM}sE at -!u(bAhK;{rky9gYcXkdMe
zcyni|D(H=Hpf#2z!b*b!3+(lNbZiYc2irIGZ|WCc5Mgv|^PjbT5xh>rC;9pb`UyL(
zyVH3)DxQXTwr*&fJpuy|Sprbm*+%lG(8hZWqKYKnyt|xdBY?IjPL6g)H at -KigMx>n
z^P+f at Um}Ot>Ip-UQ~>$(11vSz(Q$7E444DuDpsWcTNFPtI+<2qoAH~C-6h9B(-iX;
zyXmTr;iOV=w{^-~>fki{d|w#3!24-sHtjNCuI1dA(OwYKl_0*e%H7kYnZ5p3S~tYr
zR&5k-1;r>>Y{23?-oPPg=k^`gtO4ObGkdLgqn^H1q5JF$N`2{72afuuP0Z~kPk=g@
z-vw8oC0QBUs!GZ%BRZ5!nEeX6U`p!uy%rh{&2B^Dl~>%^+XNKIY-3<l;24_0-hqyz
zgJ4ucMMEj?r2k3(<I)~UkEGu(JU`OqW9ao7+h-jixqY|gvA-3*n8A^ubwqX8aqil7
zrh|Jb7M(gxzcvbk653Wz;P<|YY3joCIZ;MwV*A^^MCDYdJOw4Ne-F*1$}t5djngs-
z6s+XdcvwsO>&)sF+E!Cu3tV`M`R1$p`rhp;u-1O;ReaWlK>NUf_f8Afth8rCmMgA3
z&kFYmJ*^yRcHF-4_Du#|k&P<Y_B`8K-VzQh$uR<#!BRa?1l2)+AMrZkrKEJJ_!4(k
z04~GjY=34(CZowd;pAG5mci*kTxhB05a3O4#=yfLPO~3`ec}`8HX_ at S^z$}r+d>7}
zRq3<qoicp;gzMCS5rbxzzGndP8VYE(WliaOFajm`MA#@Z^Qn2%tqAvZLIxXv7)30J
zW~-$7!G6(65!GpbGlzI|b=G3wtpK0Grq1}uSih5(?mIx69t+MSTxPXo3oe&g at Qr#F
zTUcuQl=8eBE|+>kA&?F_(lQvIzNf(ij|!HX&q<k+g2jB>|80N1VI-~5&X^gJ;mQh5
zrZ~+C+vE1;X4P^xZ#KXb)ZS%2$#pb+&&ezyU-OKG%9;$4S~R6)`;AQ6Fa(Oa(FpY3
zXONXAYatQl$7n3&!&I*fWEIXWG<6Ny9<+T=PZ at 2PcW*>L!7QV(w1j&^H at S1AbJp{^
z08-H)kO1;T_C+<5Pj49TKFL<(Jk+;H0_BxPbUEk<%?qtjCxrJQ+4RA at fDZ=~fzN{Z
zR at dOU5PT^1-mX2uT=1Z<*nPg$EvtK_0@`Q6%;=OfzH4C46uUovs;cLK6i7^m6xk2^
z#Izzy(0!U`^ZDS7C*S at P|BL4RkMW=1%6e;(5ps>qaM;+e$uTecfB@!s;}9>CqOGEI
zv|8UP|ChWarhPwES9rav!Z2#P?*Jc+R!_;_r>8BTY?>V`bMa}{BL{r)wWDxGK{=6Q
zJlb)2B*RZQKr=DEK4q(p`BVl;^d!}2tCy|cM|Z$C22vo03_1!iBe!}AHNy^c5YpYK
zhVqAX%`W~YEeoxm1|?kav?_<!l)?)Ni{niHC-T#Pg5KSK>RTs)zrDcUp>^dEfr~BQ
zzwGO)xC^8`&q;Hd`^5yJ2A+=Sq}|QJ4gq6|S&sQn<@GO3JJJe+O3FxRBFx`~u;_uM
zfDH_=FvLFd$uTf at iNc^hdWi6a<xd)njETRZr48^VGD9{|VoBSI=j~@Ho*Z&KmAYb3
zy+8rOju+d+W at kg@Rxh#b7xC^3))xAKEm?N#hHMJVHE}Q?$HAnWh66>#k=b^R2loG6
ze+}Rwg-F4NS{Mg9EfrAV=OS2Xz_cU%#=co6SZ_aE+h4NfRpf}KDOU>kL_p!_Z_E0a
zw7cRv8v;U7s>+H!KIcNBLi=zuO#*uuLlqdL^_JX<aNgydwL{;1u46bV12DA{$>;<|
zkfHVuuPA_=(x9TkNdEd!`g-HW2cLINi;w&BPqGYf6&>+S0r&1TpyQqvOEs8TdmDr9
zM+0nBoxzlW4SfX0C(y|}aj0xf+VpLg_X(j(4?!Z7fl+Ky_LWg(@YBf at PXbkzs{CVM
z=#jO{K3lCvzQvZ5d#5hKB8o1}qRJ_qnn6Z~O!gOC{&9<$4!s0iF7IQmkP(Ll<bXfK
z-T`&iTOpH*QF)>b7>-i`{gBAp&<?a4z)*vZ!hqQiWS}$pZhlBKcmKDKKR at i7`kULT
zY~{2qD4)P2pyTX2bYu~zQ3efK!1$n=&(d$(n75Y5=_9yEA|=3xcBJ;fQl8L#i(dQD
z`_IbnWz2%8`vU6W)&NliOB0w&bVKab*PaQR8J*T#-jp~e$@C>!^LE(55;6uPW4tyh
zlP(Lr<GC=!WIW+QHO!%&Fr70}Y(%hrm*C(@{(3(@Mv-t<aau73#OwKU$uKJ_0;%9G
zbgXU||HKg5lfp-SMz*V|>#E2Nh5=9IqhBf>b+{~B1YjLIqQxfTr1-ysd^mHW`1YRJ
z%XWjepBucan(2uOsPxG}zF`If1zwqJ;udc7ExzNE<ubV-q6-{=GVp|oiu_ki%7v8U
z<>2KINwehX-PxKc?H%jUB-U!cC4_PCem-}08O8X>%c!ATpPf2;0xidVmUrzIruG2e
zet=>MqBDbM!?T{uR?le}m|JZ2$>u{H3J at EJGy)-|L68jmQl<b=*4SiEd2=}I?f&L#
zd&)Mkd_90Y2Z#0yDq}BPccW?kV!)r{HfN at CgyA0!zGbf}sL~iv59 at e2ksbt~RFFFF
zoJPgbp$_4F;e9Gxv7keT!f-moDII$8KUeq^$L1#c64gyKS4PAYt?PF#DYB_@&`Ml4
zxAI7NiDUAGrG8 at c`%KRSwu!|m%FqEGLFYi2NaRrVPD|R#^*jD^w$+drT1QHSK8-<;
zpfU`Cgo>kZ7&xR%MJY5h^tx|3>9OrzGmWb+ET}D+^l>0mtli%2NGAgGXC?TgH%Ck>
zePd#7wbnzcZYWuS9U8+?iCofS^}O1kC3o8ynBc9{G%?$N4uc7F5K*FzP{HK$U~*In
zuZ(2{3zlZ>t9fw375PWSdtSlg@!_(C23&Ztgg+SBxj{TrrWzB=$&UOHAk)~J*u5$V
zy<O0KK(;F;lb>JK-7h;4lgq!u{TYK|q&|Fr*qy6!4(ef2G;s)E10y&xNJbv0Dll^?
z&N9_k#Bht`q{=9DQk!m at cN<;Q!x3@<vMo%5vkk~xvIpHGK>17aoaW!GbL8#vc4`}^
z4X)3^o%2<)Bq4^25XuP|CscgXWauYN)>T!gn~y4!Y_*U9LW$}NhX~YCuxwgKNUl*@
zB+)<{StJs1$wJt9bs$^@hAj(nb-)k*@*CMfvx2_usWZjeesvF*hq14c`w1txQ at mbv
zAC#}&^XVM>x at PR4np$PzGpW)bon+G|rAo$iPPH9qiM7?%R=CdUBt)Q%+h!x;&aI$x
zO$|)HWczTg!$G3HsDAl*v;3A-?u>cg0_km-2*9;xkqDg}g0n%#rZZj5zvuOeU5l)v
zlNXv}kLt5;ne89x>37dhd;OtI*m}T2)qZj02S=f$_IKScs2u&f{U)h0C2wDrtxKoL
z=`SNSb-%UwH at hU==;eS~Ql6+C0MTcvNK`HQ22^KGJvOJijCHzf{}*c9ZRgE>jl&y{
zM|@8edpR#y^)ayC+AlkCrS at RbanBV-9W6z(qQM9ByGTkb5$6V-+{trXsA&)2nj89F
zygGb`h;d~(yWrxKEozIu&PE{j2|;B%mlm5XUkUDU$o?wlSHyPVr}Q?1D!r`)u17}>
zTTh|Z{jG|&oh75*_cZ?#|0~e{#DAqLx}eHwF(MMRfi|j$Bw_~eO><0#V8VfZ0d3%K
zp+2qEMVz#_>z3sEzTC6zZUI09KlwVbBmsR7Bbgjl!0^X_kmp&tICL^OAn8Jt3^pf7
z02PTLG4&9jGK~Pg3=h8Y$uOH~7jxk8D=LD=kI|Fut_71vu^Aa2zrr0(CY&A=215u;
z5dmOf0skiZ9gxHR{}}=jD=LDz{NyD}Lj1aI^49;`ZPEkKe~0)#o9q9Rp&-%0-)yP=
Xt_%Ks{cC}LE%2`e{<XmWTMPU*9lmux

literal 0
HcmV?d00001

-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/370



More information about the wine-devel mailing list