Author: fireball
Date: Sat Jun 5 11:03:08 2010
New Revision: 47585
URL:
http://svn.reactos.org/svn/reactos?rev=47585&view=rev
Log:
[VENDOR/WINE]
- Import Wine-1.2-rc2 gdi32, user32, winex11.drv, wineserver.
Modified:
vendor/wine/dlls/gdi32/current/bidi.c
vendor/wine/dlls/gdi32/current/dib.c
vendor/wine/dlls/gdi32/current/font.c
vendor/wine/dlls/gdi32/current/freetype.c
vendor/wine/dlls/gdi32/current/gdi_private.h
vendor/wine/dlls/gdi32/current/tests/bitmap.c
vendor/wine/dlls/gdi32/current/tests/font.c
vendor/wine/dlls/user32/current/caret.c
vendor/wine/dlls/user32/current/cursoricon.c
vendor/wine/dlls/user32/current/exticon.c
vendor/wine/dlls/user32/current/nonclient.c
vendor/wine/dlls/user32/current/tests/combo.c
vendor/wine/dlls/user32/current/tests/dde.c
vendor/wine/dlls/user32/current/tests/msg.c
vendor/wine/dlls/user32/current/tests/win.c
vendor/wine/dlls/user32/current/win.c
vendor/wine/dlls/winex11.drv/current/event.c
vendor/wine/dlls/winex11.drv/current/window.c
vendor/wine/dlls/winex11.drv/current/xrender.c
vendor/wine/server/current/named_pipe.c
vendor/wine/server/current/sock.c
Modified: vendor/wine/dlls/gdi32/current/bidi.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/bidi.c?re…
==============================================================================
--- vendor/wine/dlls/gdi32/current/bidi.c [iso-8859-1] (original)
+++ vendor/wine/dlls/gdi32/current/bidi.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -352,7 +352,8 @@
LPWSTR lpOutString, /* [out] Reordered string */
INT uCountOut, /* [in] Size of output buffer */
UINT *lpOrder, /* [out] Logical -> Visual order map */
- WORD **lpGlyphs /* [out] reordered, mirrored, shaped glyphs to display
*/
+ WORD **lpGlyphs, /* [out] reordered, mirrored, shaped glyphs to display
*/
+ INT *cGlyphs /* [out] number of glyphs generated */
)
{
WORD *chartype;
@@ -637,6 +638,8 @@
done += i;
}
+ if (cGlyphs)
+ *cGlyphs = glyph_i;
HeapFree(GetProcessHeap(), 0, chartype);
HeapFree(GetProcessHeap(), 0, levels);
Modified: vendor/wine/dlls/gdi32/current/dib.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/dib.c?rev…
==============================================================================
--- vendor/wine/dlls/gdi32/current/dib.c [iso-8859-1] (original)
+++ vendor/wine/dlls/gdi32/current/dib.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -647,18 +647,24 @@
DIB_GetDIBImageBytes( bmp->bitmap.bmWidth,
bmp->bitmap.bmHeight,
bmp->bitmap.bmBitsPixel );
- info->bmiHeader.biCompression = (bmp->bitmap.bmBitsPixel > 8) ?
BI_BITFIELDS : BI_RGB;
- switch(bmp->bitmap.bmBitsPixel)
+ if (bmp->dib)
{
- case 15:
- info->bmiHeader.biBitCount = 16;
- break;
- case 24:
- info->bmiHeader.biBitCount = 32;
- break;
- default:
+ info->bmiHeader.biBitCount = bmp->dib->dsBm.bmBitsPixel;
+ switch (bmp->dib->dsBm.bmBitsPixel)
+ {
+ case 16:
+ case 32:
+ info->bmiHeader.biCompression = BI_BITFIELDS;
+ break;
+ default:
+ info->bmiHeader.biCompression = BI_RGB;
+ break;
+ }
+ }
+ else
+ {
+ info->bmiHeader.biCompression = (bmp->bitmap.bmBitsPixel > 8) ?
BI_BITFIELDS : BI_RGB;
info->bmiHeader.biBitCount = bmp->bitmap.bmBitsPixel;
- break;
}
info->bmiHeader.biXPelsPerMeter = 0;
info->bmiHeader.biYPelsPerMeter = 0;
@@ -827,9 +833,13 @@
case 16:
if (info->bmiHeader.biCompression == BI_BITFIELDS)
{
- ((PDWORD)info->bmiColors)[0] = 0xf800;
- ((PDWORD)info->bmiColors)[1] = 0x07e0;
- ((PDWORD)info->bmiColors)[2] = 0x001f;
+ if (bmp->dib) memcpy( info->bmiColors, bmp->dib->dsBitfields, 3 *
sizeof(DWORD) );
+ else
+ {
+ ((PDWORD)info->bmiColors)[0] = 0xf800;
+ ((PDWORD)info->bmiColors)[1] = 0x07e0;
+ ((PDWORD)info->bmiColors)[2] = 0x001f;
+ }
}
break;
@@ -837,9 +847,13 @@
case 32:
if (info->bmiHeader.biCompression == BI_BITFIELDS)
{
- ((PDWORD)info->bmiColors)[0] = 0xff0000;
- ((PDWORD)info->bmiColors)[1] = 0x00ff00;
- ((PDWORD)info->bmiColors)[2] = 0x0000ff;
+ if (bmp->dib) memcpy( info->bmiColors, bmp->dib->dsBitfields, 3 *
sizeof(DWORD) );
+ else
+ {
+ ((PDWORD)info->bmiColors)[0] = 0xff0000;
+ ((PDWORD)info->bmiColors)[1] = 0x00ff00;
+ ((PDWORD)info->bmiColors)[2] = 0x0000ff;
+ }
}
break;
}
@@ -1236,10 +1250,22 @@
&planes, &bpp, &compression,
&sizeImage )) == -1))
return 0;
- if (compression != BI_RGB && compression != BI_BITFIELDS)
- {
- TRACE("can't create a compressed (%u) dibsection\n", compression);
+ switch (bpp)
+ {
+ case 16:
+ case 32:
+ if (compression == BI_BITFIELDS) break;
+ /* fall through */
+ case 1:
+ case 4:
+ case 8:
+ case 24:
+ if (compression == BI_RGB) break;
+ WARN( "invalid %u bpp compression %u\n", bpp, compression );
return 0;
+ default:
+ FIXME( "should fail %u bpp compression %u\n", bpp, compression );
+ break;
}
if (!(dib = HeapAlloc( GetProcessHeap(), 0, sizeof(*dib) ))) return 0;
Modified: vendor/wine/dlls/gdi32/current/font.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/font.c?re…
==============================================================================
--- vendor/wine/dlls/gdi32/current/font.c [iso-8859-1] (original)
+++ vendor/wine/dlls/gdi32/current/font.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -1702,16 +1702,21 @@
if( !(flags & (ETO_GLYPH_INDEX | ETO_IGNORELANGUAGE)) && count > 0 )
{
+ INT cGlyphs;
reordered_str = HeapAlloc(GetProcessHeap(), 0, count*sizeof(WCHAR));
BIDI_Reorder( hdc, str, count, GCP_REORDER,
((flags&ETO_RTLREADING)!=0 ||
(GetTextAlign(hdc)&TA_RTLREADING)!=0)?
WINE_GCPW_FORCE_RTL:WINE_GCPW_FORCE_LTR,
- reordered_str, count, NULL, &glyphs );
+ reordered_str, count, NULL, &glyphs, &cGlyphs);
flags |= ETO_IGNORELANGUAGE;
if (glyphs)
+ {
flags |= ETO_GLYPH_INDEX;
+ if (cGlyphs != count)
+ count = cGlyphs;
+ }
}
else if(flags & ETO_GLYPH_INDEX)
glyphs = reordered_str;
@@ -2874,7 +2879,7 @@
} else
{
BIDI_Reorder(NULL, lpString, uCount, dwFlags, WINE_GCPW_FORCE_LTR,
lpResults->lpOutString,
- nSet, lpResults->lpOrder, NULL );
+ nSet, lpResults->lpOrder, NULL, NULL );
}
/* FIXME: Will use the placement chars */
Modified: vendor/wine/dlls/gdi32/current/freetype.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/freetype.…
==============================================================================
--- vendor/wine/dlls/gdi32/current/freetype.c [iso-8859-1] (original)
+++ vendor/wine/dlls/gdi32/current/freetype.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -5025,22 +5025,19 @@
{
for ( x = 0; x < src_width / hmul; x++ )
{
- unsigned int alpha = (src[hmul * x + rgb_interval * 0] +
- src[hmul * x + rgb_interval * 1] +
- src[hmul * x + rgb_interval * 2]) / 3;
if ( rgb )
{
- dst[x] = ((src[hmul * x + rgb_interval * 0] * alpha / 255)
<< 16) |
- ((src[hmul * x + rgb_interval * 1] * alpha / 255)
<< 8) |
- ((src[hmul * x + rgb_interval * 2] * alpha / 255)
<< 0) |
- (alpha << 24);
+ dst[x] = ((unsigned int)src[hmul * x + rgb_interval * 0] <<
16) |
+ ((unsigned int)src[hmul * x + rgb_interval * 1] <<
8) |
+ ((unsigned int)src[hmul * x + rgb_interval * 2] <<
0) |
+ ((unsigned int)src[hmul * x + rgb_interval * 1] <<
24) ;
}
else
{
- dst[x] = ((src[hmul * x + rgb_interval * 2] * alpha / 255)
<< 16) |
- ((src[hmul * x + rgb_interval * 1] * alpha / 255)
<< 8) |
- ((src[hmul * x + rgb_interval * 0] * alpha / 255)
<< 0) |
- (alpha << 24);
+ dst[x] = ((unsigned int)src[hmul * x + rgb_interval * 2] <<
16) |
+ ((unsigned int)src[hmul * x + rgb_interval * 1] <<
8) |
+ ((unsigned int)src[hmul * x + rgb_interval * 0] <<
0) |
+ ((unsigned int)src[hmul * x + rgb_interval * 1] <<
24) ;
}
}
src += src_pitch * vmul;
Modified: vendor/wine/dlls/gdi32/current/gdi_private.h
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/gdi_priva…
==============================================================================
--- vendor/wine/dlls/gdi32/current/gdi_private.h [iso-8859-1] (original)
+++ vendor/wine/dlls/gdi32/current/gdi_private.h [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -356,7 +356,7 @@
#define WINE_GCPW_LOOSE_MASK 2
extern BOOL BIDI_Reorder( HDC hDC, LPCWSTR lpString, INT uCount, DWORD dwFlags, DWORD
dwWineGCP_Flags,
- LPWSTR lpOutString, INT uCountOut, UINT *lpOrder, WORD
**lpGlyphs ) DECLSPEC_HIDDEN;
+ LPWSTR lpOutString, INT uCountOut, UINT *lpOrder, WORD
**lpGlyphs, INT* cGlyphs ) DECLSPEC_HIDDEN;
/* bitmap.c */
extern HBITMAP BITMAP_CopyBitmap( HBITMAP hbitmap ) DECLSPEC_HIDDEN;
Modified: vendor/wine/dlls/gdi32/current/tests/bitmap.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/tests/bit…
==============================================================================
--- vendor/wine/dlls/gdi32/current/tests/bitmap.c [iso-8859-1] (original)
+++ vendor/wine/dlls/gdi32/current/tests/bitmap.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -545,6 +545,18 @@
hdib = CreateDIBSection(hdc, pbmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0);
ok(hdib == NULL, "CreateDIBSection should fail when asked to create a compressed
DIB section\n");
ok(GetLastError() == 0xdeadbeef, "wrong error %d\n", GetLastError());
+
+ for (i = 0; i < 128; i++)
+ {
+ pbmi->bmiHeader.biBitCount = i;
+ pbmi->bmiHeader.biCompression = BI_RGB;
+ hdib = CreateDIBSection(hdc, pbmi, DIB_RGB_COLORS, (void**)&bits, NULL, 0);
+ if (i == 1 || i == 4 || i == 8 || i == 16 || i == 24 || i == 32)
+ ok(hdib != NULL, "CreateDIBSection bpp %u\n", i);
+ else
+ todo_wine ok(hdib == NULL, "CreateDIBSection bpp %u succeeded\n",
i);
+ if (hdib) DeleteObject( hdib );
+ }
pbmi->bmiHeader.biBitCount = 16;
pbmi->bmiHeader.biCompression = BI_BITFIELDS;
@@ -1809,9 +1821,11 @@
char dibinfo_buf[sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)];
DWORD bits[32];
LPBITMAPINFO dibinfo = (LPBITMAPINFO) dibinfo_buf;
+ DWORD *bitmasks = (DWORD *)dibinfo->bmiColors;
HDC hdc;
HBITMAP hbm;
int ret;
+ void *ptr;
memset(dibinfo, 0, sizeof(dibinfo_buf));
dibinfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
@@ -1826,8 +1840,6 @@
ok(ret == 1, "GetDIBits failed\n");
if (dibinfo->bmiHeader.biBitCount > 8)
{
- DWORD *bitmasks = (DWORD *)dibinfo->bmiColors;
-
ok( dibinfo->bmiHeader.biCompression == BI_BITFIELDS,
"compression is %u\n", dibinfo->bmiHeader.biCompression );
@@ -1890,6 +1902,135 @@
}
}
else skip("not in 16 bpp BI_BITFIELDS mode, skipping that test\n");
+
+ DeleteObject(hbm);
+
+ /* same thing now with a 32-bpp DIB section */
+
+ dibinfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ dibinfo->bmiHeader.biWidth = 1;
+ dibinfo->bmiHeader.biHeight = 1;
+ dibinfo->bmiHeader.biPlanes = 1;
+ dibinfo->bmiHeader.biBitCount = 32;
+ dibinfo->bmiHeader.biCompression = BI_RGB;
+ dibinfo->bmiHeader.biSizeImage = 0;
+ dibinfo->bmiHeader.biXPelsPerMeter = 0;
+ dibinfo->bmiHeader.biYPelsPerMeter = 0;
+ dibinfo->bmiHeader.biClrUsed = 0;
+ dibinfo->bmiHeader.biClrImportant = 0;
+ bitmasks[0] = 0x0000ff;
+ bitmasks[1] = 0x00ff00;
+ bitmasks[2] = 0xff0000;
+ hbm = CreateDIBSection( hdc, dibinfo, DIB_RGB_COLORS, &ptr, NULL, 0 );
+ ok( hbm != 0, "failed to create bitmap\n" );
+
+ memset(dibinfo, 0, sizeof(dibinfo_buf));
+ dibinfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ ret = GetDIBits(hdc, hbm, 0, 0, NULL, dibinfo, DIB_RGB_COLORS);
+ ok(ret == 1, "GetDIBits failed\n");
+ ok( dibinfo->bmiHeader.biBitCount == 32, "wrong bit count %u\n",
dibinfo->bmiHeader.biBitCount );
+
+ ok( dibinfo->bmiHeader.biCompression == BI_BITFIELDS,
+ "compression is %u\n", dibinfo->bmiHeader.biCompression );
+ ok( !bitmasks[0], "red mask is set\n" );
+ ok( !bitmasks[1], "green mask is set\n" );
+ ok( !bitmasks[2], "blue mask is set\n" );
+
+ dibinfo->bmiHeader.biSizeImage = 0xdeadbeef;
+ ret = GetDIBits(hdc, hbm, 0, 1, bits, dibinfo, DIB_RGB_COLORS);
+ ok(ret == 1, "GetDIBits failed\n");
+ ok( dibinfo->bmiHeader.biBitCount == 32, "wrong bit count %u\n",
dibinfo->bmiHeader.biBitCount );
+ ok( bitmasks[0] == 0xff0000, "wrong red mask %08x\n", bitmasks[0] );
+ ok( bitmasks[1] == 0x00ff00, "wrong green mask %08x\n", bitmasks[1] );
+ ok( bitmasks[2] == 0x0000ff, "wrong blue mask %08x\n", bitmasks[2] );
+ ok( dibinfo->bmiHeader.biSizeImage != 0xdeadbeef ||
+ broken(dibinfo->bmiHeader.biSizeImage == 0xdeadbeef), /* win9x */
+ "size image not set\n" );
+
+ DeleteObject(hbm);
+
+ dibinfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ dibinfo->bmiHeader.biWidth = 1;
+ dibinfo->bmiHeader.biHeight = 1;
+ dibinfo->bmiHeader.biPlanes = 1;
+ dibinfo->bmiHeader.biBitCount = 32;
+ dibinfo->bmiHeader.biCompression = BI_BITFIELDS;
+ dibinfo->bmiHeader.biSizeImage = 0;
+ dibinfo->bmiHeader.biXPelsPerMeter = 0;
+ dibinfo->bmiHeader.biYPelsPerMeter = 0;
+ dibinfo->bmiHeader.biClrUsed = 0;
+ dibinfo->bmiHeader.biClrImportant = 0;
+ bitmasks[0] = 0x0000ff;
+ bitmasks[1] = 0x00ff00;
+ bitmasks[2] = 0xff0000;
+ hbm = CreateDIBSection( hdc, dibinfo, DIB_RGB_COLORS, &ptr, NULL, 0 );
+ ok( hbm != 0 || broken(!hbm), /* win9x */ "failed to create bitmap\n" );
+
+ if (hbm)
+ {
+ memset(dibinfo, 0, sizeof(dibinfo_buf));
+ dibinfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ ret = GetDIBits(hdc, hbm, 0, 0, NULL, dibinfo, DIB_RGB_COLORS);
+ ok(ret == 1, "GetDIBits failed\n");
+
+ ok( dibinfo->bmiHeader.biCompression == BI_BITFIELDS,
+ "compression is %u\n", dibinfo->bmiHeader.biCompression );
+ ok( !bitmasks[0], "red mask is set\n" );
+ ok( !bitmasks[1], "green mask is set\n" );
+ ok( !bitmasks[2], "blue mask is set\n" );
+
+ dibinfo->bmiHeader.biSizeImage = 0xdeadbeef;
+ ret = GetDIBits(hdc, hbm, 0, 1, bits, dibinfo, DIB_RGB_COLORS);
+ ok(ret == 1, "GetDIBits failed\n");
+ ok( bitmasks[0] == 0x0000ff, "wrong red mask %08x\n", bitmasks[0] );
+ ok( bitmasks[1] == 0x00ff00, "wrong green mask %08x\n", bitmasks[1] );
+ ok( bitmasks[2] == 0xff0000, "wrong blue mask %08x\n", bitmasks[2] );
+ ok( dibinfo->bmiHeader.biSizeImage != 0xdeadbeef, "size image not
set\n" );
+
+ DeleteObject(hbm);
+ }
+
+ /* 24-bpp DIB sections don't have bitfields */
+
+ dibinfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ dibinfo->bmiHeader.biWidth = 1;
+ dibinfo->bmiHeader.biHeight = 1;
+ dibinfo->bmiHeader.biPlanes = 1;
+ dibinfo->bmiHeader.biBitCount = 24;
+ dibinfo->bmiHeader.biCompression = BI_BITFIELDS;
+ dibinfo->bmiHeader.biSizeImage = 0;
+ dibinfo->bmiHeader.biXPelsPerMeter = 0;
+ dibinfo->bmiHeader.biYPelsPerMeter = 0;
+ dibinfo->bmiHeader.biClrUsed = 0;
+ dibinfo->bmiHeader.biClrImportant = 0;
+ hbm = CreateDIBSection( hdc, dibinfo, DIB_RGB_COLORS, &ptr, NULL, 0 );
+ ok( hbm == 0, "creating 24-bpp BI_BITFIELDS dibsection should fail\n" );
+ dibinfo->bmiHeader.biCompression = BI_RGB;
+ hbm = CreateDIBSection( hdc, dibinfo, DIB_RGB_COLORS, &ptr, NULL, 0 );
+ ok( hbm != 0, "failed to create bitmap\n" );
+
+ memset(dibinfo, 0, sizeof(dibinfo_buf));
+ dibinfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ ret = GetDIBits(hdc, hbm, 0, 0, NULL, dibinfo, DIB_RGB_COLORS);
+ ok(ret == 1, "GetDIBits failed\n");
+ ok( dibinfo->bmiHeader.biBitCount == 24, "wrong bit count %u\n",
dibinfo->bmiHeader.biBitCount );
+
+ ok( dibinfo->bmiHeader.biCompression == BI_RGB,
+ "compression is %u\n", dibinfo->bmiHeader.biCompression );
+ ok( !bitmasks[0], "red mask is set\n" );
+ ok( !bitmasks[1], "green mask is set\n" );
+ ok( !bitmasks[2], "blue mask is set\n" );
+
+ dibinfo->bmiHeader.biSizeImage = 0xdeadbeef;
+ ret = GetDIBits(hdc, hbm, 0, 1, bits, dibinfo, DIB_RGB_COLORS);
+ ok(ret == 1, "GetDIBits failed\n");
+ ok( dibinfo->bmiHeader.biBitCount == 24, "wrong bit count %u\n",
dibinfo->bmiHeader.biBitCount );
+ ok( !bitmasks[0], "red mask is set\n" );
+ ok( !bitmasks[1], "green mask is set\n" );
+ ok( !bitmasks[2], "blue mask is set\n" );
+ ok( dibinfo->bmiHeader.biSizeImage != 0xdeadbeef ||
+ broken(dibinfo->bmiHeader.biSizeImage == 0xdeadbeef), /* win9x */
+ "size image not set\n" );
DeleteObject(hbm);
ReleaseDC(NULL, hdc);
Modified: vendor/wine/dlls/gdi32/current/tests/font.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/gdi32/current/tests/fon…
==============================================================================
--- vendor/wine/dlls/gdi32/current/tests/font.c [iso-8859-1] (original)
+++ vendor/wine/dlls/gdi32/current/tests/font.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -3095,7 +3095,9 @@
lstrcpyA(lf.lfFaceName, TestName[i]);
hfont = CreateFontIndirectA(&lf);
ok(hfont != 0, "CreateFontIndirectA failed\n");
+ SetLastError(0xdeadbeef);
ret = GetObject(hfont, sizeof(getobj_lf), &getobj_lf);
+ ok(ret, "GetObject failed: %d\n", GetLastError());
ok(lf.lfItalic == getobj_lf.lfItalic, "lfItalic: expect %02x got
%02x\n", lf.lfItalic, getobj_lf.lfItalic);
ok(lf.lfWeight == getobj_lf.lfWeight ||
broken((SHORT)lf.lfWeight == getobj_lf.lfWeight), /* win9x */
Modified: vendor/wine/dlls/user32/current/caret.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/caret.c?…
==============================================================================
--- vendor/wine/dlls/user32/current/caret.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/caret.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -269,7 +269,7 @@
}
}
SERVER_END_REQ;
- if (ret && !hidden)
+ if (ret && !hidden && (x != r.left || y != r.top))
{
if (old_state) CARET_DisplayCaret( hwnd, &r );
r.right += x - r.left;
Modified: vendor/wine/dlls/user32/current/cursoricon.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/cursoric…
==============================================================================
--- vendor/wine/dlls/user32/current/cursoricon.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/cursoricon.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -1830,6 +1830,43 @@
return TRUE;
}
+/* copy an icon bitmap, even when it can't be selected into a DC */
+/* helper for CreateIconIndirect */
+static void stretch_blt_icon( HDC hdc_dst, int dst_x, int dst_y, int dst_width, int
dst_height,
+ HBITMAP src, int width, int height )
+{
+ HDC hdc = CreateCompatibleDC( 0 );
+
+ if (!SelectObject( hdc, src )) /* do it the hard way */
+ {
+ BITMAPINFO *info;
+ void *bits;
+
+ if (!(info = HeapAlloc( GetProcessHeap(), 0, FIELD_OFFSET( BITMAPINFO,
bmiColors[256] )))) return;
+ info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ info->bmiHeader.biWidth = width;
+ info->bmiHeader.biHeight = height;
+ info->bmiHeader.biPlanes = GetDeviceCaps( hdc_dst, PLANES );
+ info->bmiHeader.biBitCount = GetDeviceCaps( hdc_dst, BITSPIXEL );
+ info->bmiHeader.biCompression = BI_RGB;
+ info->bmiHeader.biSizeImage = height * get_dib_width_bytes( width,
info->bmiHeader.biBitCount );
+ info->bmiHeader.biXPelsPerMeter = 0;
+ info->bmiHeader.biYPelsPerMeter = 0;
+ info->bmiHeader.biClrUsed = 0;
+ info->bmiHeader.biClrImportant = 0;
+ bits = HeapAlloc( GetProcessHeap(), 0, info->bmiHeader.biSizeImage );
+ if (bits && GetDIBits( hdc, src, 0, height, bits, info, DIB_RGB_COLORS
))
+ StretchDIBits( hdc_dst, dst_x, dst_y, dst_width, dst_height,
+ 0, 0, width, height, bits, info, DIB_RGB_COLORS, SRCCOPY );
+
+ HeapFree( GetProcessHeap(), 0, bits );
+ HeapFree( GetProcessHeap(), 0, info );
+ }
+ else StretchBlt( hdc_dst, dst_x, dst_y, dst_width, dst_height, hdc, 0, 0, width,
height, SRCCOPY );
+
+ DeleteDC( hdc );
+}
+
/**********************************************************************
* CreateIconIndirect (USER32.@)
*/
@@ -1839,7 +1876,7 @@
HICON hObj;
HBITMAP color = 0, mask;
int width, height;
- HDC src, dst;
+ HDC hdc;
TRACE("color %p, mask %p, hotspot %ux%u, fIcon %d\n",
iconinfo->hbmColor, iconinfo->hbmMask,
@@ -1875,28 +1912,22 @@
mask = CreateBitmap( width, height, 1, 1, NULL );
}
- src = CreateCompatibleDC( 0 );
- dst = CreateCompatibleDC( 0 );
-
- SelectObject( src, iconinfo->hbmMask );
- SelectObject( dst, mask );
- StretchBlt( dst, 0, 0, width, height, src, 0, 0, bmpAnd.bmWidth, bmpAnd.bmHeight,
SRCCOPY );
+ hdc = CreateCompatibleDC( 0 );
+ SelectObject( hdc, mask );
+ stretch_blt_icon( hdc, 0, 0, width, height, iconinfo->hbmMask, bmpAnd.bmWidth,
bmpAnd.bmHeight );
if (color)
{
- SelectObject( src, iconinfo->hbmColor );
- SelectObject( dst, color );
- BitBlt( dst, 0, 0, width, height, src, 0, 0, SRCCOPY );
+ SelectObject( hdc, color );
+ stretch_blt_icon( hdc, 0, 0, width, height, iconinfo->hbmColor, width, height
);
}
else if (iconinfo->hbmColor)
{
- SelectObject( src, iconinfo->hbmColor );
- BitBlt( dst, 0, height, width, height, src, 0, 0, SRCCOPY );
+ stretch_blt_icon( hdc, 0, height, width, height, iconinfo->hbmColor, width,
height );
}
else height /= 2;
- DeleteDC( src );
- DeleteDC( dst );
+ DeleteDC( hdc );
hObj = alloc_icon_handle();
if (hObj)
Modified: vendor/wine/dlls/user32/current/exticon.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/exticon.…
==============================================================================
--- vendor/wine/dlls/user32/current/exticon.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/exticon.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -37,7 +37,7 @@
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
-#include "wine/winbase16.h"
+#include "winnls.h"
#include "user_private.h"
#include "wine/debug.h"
@@ -64,6 +64,26 @@
WORD idCount; /* How many images */
icoICONDIRENTRY idEntries[1]; /* An entry for each image (idCount of 'em) */
} icoICONDIR, *LPicoICONDIR;
+
+typedef struct
+{
+ WORD offset;
+ WORD length;
+ WORD flags;
+ WORD id;
+ WORD handle;
+ WORD usage;
+} NE_NAMEINFO;
+
+typedef struct
+{
+ WORD type_id;
+ WORD count;
+ DWORD resloader;
+} NE_TYPEINFO;
+
+#define NE_RSCTYPE_ICON 0x8003
+#define NE_RSCTYPE_GROUP_ICON 0x800e
#include "poppack.h"
Modified: vendor/wine/dlls/user32/current/nonclient.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/nonclien…
==============================================================================
--- vendor/wine/dlls/user32/current/nonclient.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/nonclient.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -1548,19 +1548,19 @@
break;
case SC_MINIMIZE:
- if (hwnd == GetForegroundWindow())
+ if (hwnd == GetActiveWindow())
ShowOwnedPopups(hwnd,FALSE);
ShowWindow( hwnd, SW_MINIMIZE );
break;
case SC_MAXIMIZE:
- if (IsIconic(hwnd) && hwnd == GetForegroundWindow())
+ if (IsIconic(hwnd) && hwnd == GetActiveWindow())
ShowOwnedPopups(hwnd,TRUE);
ShowWindow( hwnd, SW_MAXIMIZE );
break;
case SC_RESTORE:
- if (IsIconic(hwnd) && hwnd == GetForegroundWindow())
+ if (IsIconic(hwnd) && hwnd == GetActiveWindow())
ShowOwnedPopups(hwnd,TRUE);
ShowWindow( hwnd, SW_RESTORE );
break;
Modified: vendor/wine/dlls/user32/current/tests/combo.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/co…
==============================================================================
--- vendor/wine/dlls/user32/current/tests/combo.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/tests/combo.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -384,6 +384,8 @@
rc.right - rc.left, clwidth - 2);
ok( rc.bottom - rc.top == ddheight, "drop-down rect height is %d vs %d\n",
rc.bottom - rc.top, ddheight);
+ ok( rc.right - rc.left == ddwidth -2, "drop-down rect width is %d vs
%d\n",
+ rc.right - rc.left, ddwidth - 2);
/* new cx, cy is slightly bigger than the initial values */
MoveWindow( hCombo, 10, 10, clwidth + 2, clheight + 2, TRUE);
GetClientRect( hCombo, &rc);
Modified: vendor/wine/dlls/user32/current/tests/dde.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/dd…
==============================================================================
--- vendor/wine/dlls/user32/current/tests/dde.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/tests/dde.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -1447,6 +1447,7 @@
res = 0xdeadbeef;
DdeGetLastError(client_pid);
hdata = DdeClientTransaction(NULL, 0, conversation, item, CF_TEXT, XTYP_REQUEST,
default_timeout, &res);
+ ok(hdata == NULL, "Expected NULL, got %p\n", hdata);
ret = DdeGetLastError(client_pid);
todo_wine
ok(ret == DMLERR_INVALIDPARAMETER, "Expected DMLERR_INVALIDPARAMETER, got
%d\n", ret);
Modified: vendor/wine/dlls/user32/current/tests/msg.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/ms…
==============================================================================
--- vendor/wine/dlls/user32/current/tests/msg.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/tests/msg.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -185,7 +185,7 @@
{ WM_GETTITLEBARINFOEX, sent|optional },
{ WM_PAINT, sent|optional },
{ WM_NCPAINT, sent|beginpaint|optional },
- { WM_GETTEXT, sent|defwinproc|optional },
+ { WM_GETTEXT, sent|beginpaint|defwinproc|optional },
{ WM_ERASEBKGND, sent|beginpaint|optional },
{ 0 }
};
Modified: vendor/wine/dlls/user32/current/tests/win.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/tests/wi…
==============================================================================
--- vendor/wine/dlls/user32/current/tests/win.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/tests/win.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -3213,10 +3213,12 @@
GetWindowRect( child, &rc);
MapWindowPoints( NULL, hwnd, (POINT*) &rc, 2);
ret = GetUpdateRect( child, &rc2, 0);
+ ok( ret == 1, "Expected GetUpdateRect to return non-zero, got %d\n", ret);
ok( rc2.right > rc2.left && rc2.bottom > rc2.top,
"Update rectangle is empty!\n");
ValidateRect( hwnd, &rc);
ret = GetUpdateRect( child, &rc2, 0);
+ ok( !ret, "Expected GetUpdateRect to return zero, got %d\n", ret);
ok( rc2.left == 0 && rc2.top == 0 && rc2.right == 0 &&
rc2.bottom == 0,
"Update rectangle %d,%d-%d,%d is not empty!\n", rc2.left, rc2.top,
rc2.right, rc2.bottom);
@@ -3228,6 +3230,7 @@
rgn = CreateRectRgnIndirect( &rc);
ValidateRgn( hwnd, rgn);
ret = GetUpdateRect( child, &rc2, 0);
+ ok( !ret, "Expected GetUpdateRect to return zero, got %d\n", ret);
ok( rc2.left == 0 && rc2.top == 0 && rc2.right == 0 &&
rc2.bottom == 0,
"Update rectangle %d,%d-%d,%d is not empty!\n", rc2.left, rc2.top,
rc2.right, rc2.bottom);
Modified: vendor/wine/dlls/user32/current/win.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/user32/current/win.c?re…
==============================================================================
--- vendor/wine/dlls/user32/current/win.c [iso-8859-1] (original)
+++ vendor/wine/dlls/user32/current/win.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -1148,9 +1148,14 @@
if((cs->style & WS_VISIBLE) && IsZoomed(top_child))
{
TRACE("Restoring current maximized child %p\n", top_child);
- SendMessageW( top_child, WM_SETREDRAW, FALSE, 0 );
- ShowWindow( top_child, SW_SHOWNORMAL );
- SendMessageW( top_child, WM_SETREDRAW, TRUE, 0 );
+ if (cs->style & WS_MAXIMIZE)
+ {
+ /* if the new window is maximized don't bother repainting */
+ SendMessageW( top_child, WM_SETREDRAW, FALSE, 0 );
+ ShowWindow( top_child, SW_SHOWNORMAL );
+ SendMessageW( top_child, WM_SETREDRAW, TRUE, 0 );
+ }
+ else ShowWindow( top_child, SW_SHOWNORMAL );
}
}
}
Modified: vendor/wine/dlls/winex11.drv/current/event.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/eve…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/event.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/event.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -522,7 +522,6 @@
if (IsWindowEnabled(hwnd))
{
HMENU hSysMenu;
- POINT pt;
if (GetClassLongW(hwnd, GCL_STYLE) & CS_NOCLOSE) return;
hSysMenu = GetSystemMenu(hwnd, FALSE);
@@ -553,10 +552,12 @@
break;
}
}
- /* Simulate clicking the caption Close button */
- GetCursorPos( &pt );
- PostMessageW( hwnd, WM_NCLBUTTONDOWN, HTCLOSE, MAKELPARAM( pt.x, pt.y ) );
- PostMessageW( hwnd, WM_LBUTTONUP, HTCLOSE, MAKELPARAM( pt.x, pt.y ) );
+
+ /* Simulate pressing Alt+F4 */
+ keybd_event(VK_MENU, 0, 0, 0);
+ keybd_event(VK_F4, 0, 0, 0);
+ keybd_event(VK_F4, 0, KEYEVENTF_KEYUP, 0);
+ keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
}
}
else if (protocol == x11drv_atom(WM_TAKE_FOCUS))
@@ -941,6 +942,8 @@
static void handle_wm_state_notify( struct x11drv_win_data *data, XPropertyEvent *event,
BOOL update_window )
{
+ DWORD style;
+
switch(event->state)
{
case PropertyDelete:
@@ -966,25 +969,37 @@
if (!update_window || !data->managed || !data->mapped) return;
+ style = GetWindowLongW( data->hwnd, GWL_STYLE );
+
if (data->iconic && data->wm_state == NormalState) /* restore window
*/
{
data->iconic = FALSE;
if (is_net_wm_state_maximized( event->display, data ))
{
- TRACE( "restoring to max %p/%lx\n", data->hwnd,
data->whole_window );
- SendMessageW( data->hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0 );
- }
- else
+ if ((style & WS_MAXIMIZEBOX) && !(style & WS_DISABLED))
+ {
+ TRACE( "restoring to max %p/%lx\n", data->hwnd,
data->whole_window );
+ SendMessageW( data->hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0 );
+ }
+ else TRACE( "not restoring to max win %p/%lx style %08x\n",
+ data->hwnd, data->whole_window, style );
+ }
+ else if (style & (WS_MINIMIZE | WS_MAXIMIZE))
{
TRACE( "restoring win %p/%lx\n", data->hwnd,
data->whole_window );
SendMessageW( data->hwnd, WM_SYSCOMMAND, SC_RESTORE, 0 );
}
+ else TRACE( "not restoring win %p/%lx style %08x\n", data->hwnd,
data->whole_window, style );
}
else if (!data->iconic && data->wm_state == IconicState)
{
- TRACE( "minimizing win %p/%lx\n", data->hwnd, data->whole_window
);
data->iconic = TRUE;
- SendMessageW( data->hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0 );
+ if ((style & WS_MINIMIZEBOX) && !(style & WS_DISABLED))
+ {
+ TRACE( "minimizing win %p/%lx\n", data->hwnd,
data->whole_window );
+ SendMessageW( data->hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0 );
+ }
+ else TRACE( "not minimizing win %p/%lx style %08x\n", data->hwnd,
data->whole_window, style );
}
}
Modified: vendor/wine/dlls/winex11.drv/current/window.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/win…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/window.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/window.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -214,15 +214,12 @@
/***********************************************************************
- * X11DRV_is_window_rect_mapped
+ * is_window_rect_mapped
*
* Check if the X whole window should be mapped based on its rectangle
*/
static BOOL is_window_rect_mapped( const RECT *rect )
{
- /* don't map if rect is empty */
- if (IsRectEmpty( rect )) return FALSE;
-
/* don't map if rect is off-screen */
if (rect->left >= virtual_screen_rect.right ||
rect->top >= virtual_screen_rect.bottom ||
@@ -245,19 +242,6 @@
/* Metacity needs the window to be resizable to make it fullscreen */
return (data->whole_rect.left <= 0 && data->whole_rect.right >=
screen_width &&
data->whole_rect.top <= 0 && data->whole_rect.bottom >=
screen_height);
-}
-
-
-/***********************************************************************
- * get_window_owner
- */
-static HWND get_window_owner( HWND hwnd )
-{
- RECT rect;
- HWND owner = GetWindow( hwnd, GW_OWNER );
- /* ignore the zero-size owners used by Delphi apps */
- if (owner && GetWindowRect( owner, &rect ) && IsRectEmpty(
&rect )) owner = 0;
- return owner;
}
@@ -455,6 +439,16 @@
if (!data->whole_window) return;
data->shaped = FALSE;
+
+ if (IsRectEmpty( &data->window_rect )) /* set an empty shape */
+ {
+ static XRectangle empty_rect;
+ wine_tsx11_lock();
+ XShapeCombineRectangles( display, data->whole_window, ShapeBounding, 0, 0,
+ &empty_rect, 1, ShapeSet, YXBanded );
+ wine_tsx11_unlock();
+ return;
+ }
if (hrgn == (HRGN)1) /* hack: win_region == 1 means retrieve region from server */
{
@@ -1018,6 +1012,8 @@
{
size_hints->max_width = data->whole_rect.right -
data->whole_rect.left;
size_hints->max_height = data->whole_rect.bottom -
data->whole_rect.top;
+ if (size_hints->max_width <= 0 ||size_hints->max_height <= 0)
+ size_hints->max_width = size_hints->max_height = 1;
size_hints->min_width = size_hints->max_width;
size_hints->min_height = size_hints->max_height;
size_hints->flags |= PMinSize | PMaxSize;
@@ -1167,7 +1163,7 @@
{
style = GetWindowLongW( data->hwnd, GWL_STYLE );
ex_style = GetWindowLongW( data->hwnd, GWL_EXSTYLE );
- owner = get_window_owner( data->hwnd );
+ owner = GetWindow( data->hwnd, GW_OWNER );
if ((owner_win = get_owner_whole_window( owner, data->managed ))) group_leader
= owner_win;
}
@@ -1181,6 +1177,7 @@
/* set the WM_WINDOW_TYPE */
if (style & WS_THICKFRAME) window_type =
x11drv_atom(_NET_WM_WINDOW_TYPE_NORMAL);
else if (ex_style & WS_EX_APPWINDOW) window_type =
x11drv_atom(_NET_WM_WINDOW_TYPE_NORMAL);
+ else if (style & WS_MINIMIZEBOX) window_type =
x11drv_atom(_NET_WM_WINDOW_TYPE_NORMAL);
else if (style & WS_DLGFRAME) window_type =
x11drv_atom(_NET_WM_WINDOW_TYPE_DIALOG);
else if (ex_style & WS_EX_DLGMODALFRAME) window_type =
x11drv_atom(_NET_WM_WINDOW_TYPE_DIALOG);
else if ((style & WS_POPUP) && owner) window_type =
x11drv_atom(_NET_WM_WINDOW_TYPE_DIALOG);
@@ -1257,7 +1254,7 @@
new_state |= (1 << NET_WM_STATE_ABOVE);
if (ex_style & WS_EX_TOOLWINDOW)
new_state |= (1 << NET_WM_STATE_SKIP_TASKBAR) | (1 <<
NET_WM_STATE_SKIP_PAGER);
- if (!(ex_style & WS_EX_APPWINDOW) && get_window_owner( data->hwnd ))
+ if (!(ex_style & WS_EX_APPWINDOW) && GetWindow( data->hwnd, GW_OWNER
))
new_state |= (1 << NET_WM_STATE_SKIP_TASKBAR);
if (!data->mapped) /* set the _NET_WM_STATE atom directly */
@@ -1500,6 +1497,8 @@
XReconfigureWMWindow( display, data->whole_window,
DefaultScreen(display), mask, &changes );
#ifdef HAVE_LIBXSHAPE
+ if (IsRectEmpty( old_window_rect ) != IsRectEmpty( &data->window_rect ))
+ sync_window_region( display, data, (HRGN)1 );
if (data->shaped)
{
int old_x_offset = old_window_rect->left - old_whole_rect->left;
@@ -1687,7 +1686,7 @@
sync_window_text( display, data->whole_window, text );
/* set the window region */
- if (win_rgn) sync_window_region( display, data, win_rgn );
+ if (win_rgn || IsRectEmpty( &data->window_rect )) sync_window_region( display,
data, win_rgn );
/* set the window opacity */
if (!GetLayeredWindowAttributes( data->hwnd, &key, &alpha,
&layered_flags )) layered_flags = 0;
@@ -2330,7 +2329,8 @@
if (data->mapped)
{
if (((swp_flags & SWP_HIDEWINDOW) && !(new_style & WS_VISIBLE))
||
- (!event_type && !is_window_rect_mapped( rectWindow )))
+ (event_type != ConfigureNotify &&
+ !is_window_rect_mapped( rectWindow ) && is_window_rect_mapped(
&old_window_rect )))
unmap_window( display, data );
}
Modified: vendor/wine/dlls/winex11.drv/current/xrender.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/dlls/winex11.drv/current/xre…
==============================================================================
--- vendor/wine/dlls/winex11.drv/current/xrender.c [iso-8859-1] (original)
+++ vendor/wine/dlls/winex11.drv/current/xrender.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -193,6 +193,7 @@
MAKE_FUNCPTR(FcPatternDestroy)
MAKE_FUNCPTR(FcPatternAddInteger)
MAKE_FUNCPTR(FcPatternAddString)
+MAKE_FUNCPTR(FcPatternGetBool)
MAKE_FUNCPTR(FcPatternGetInteger)
MAKE_FUNCPTR(FcPatternGetString)
static void *fontconfig_handle;
@@ -408,6 +409,7 @@
LOAD_FUNCPTR(FcPatternDestroy);
LOAD_FUNCPTR(FcPatternAddInteger);
LOAD_FUNCPTR(FcPatternAddString);
+ LOAD_FUNCPTR(FcPatternGetBool);
LOAD_FUNCPTR(FcPatternGetInteger);
LOAD_FUNCPTR(FcPatternGetString);
#undef LOAD_FUNCPTR
@@ -936,14 +938,17 @@
if ((match = pFcFontMatch( NULL, pattern, &result )))
{
int rgba;
-
+ FcBool antialias;
+
+ if (pFcPatternGetBool( match, FC_ANTIALIAS, 0, &antialias ) !=
FcResultMatch)
+ antialias = TRUE;
if (pFcPatternGetInteger( match, FC_RGBA, 0, &rgba ) ==
FcResultMatch)
{
FcChar8 *file;
if (pFcPatternGetString( match, FC_FILE, 0, &file ) !=
FcResultMatch) file = NULL;
- TRACE( "fontconfig returned rgba %u for font %s file
%s\n",
- rgba, debugstr_w(plfsz->lf.lfFaceName), debugstr_a((char
*)file) );
+ TRACE( "fontconfig returned rgba %u antialias %u for font %s
file %s\n",
+ rgba, antialias, debugstr_w(plfsz->lf.lfFaceName),
debugstr_a((char *)file) );
switch (rgba)
{
@@ -951,7 +956,7 @@
case FC_RGBA_BGR: entry->aa_default = AA_BGR; break;
case FC_RGBA_VRGB: entry->aa_default = AA_VRGB; break;
case FC_RGBA_VBGR: entry->aa_default = AA_VBGR; break;
- case FC_RGBA_NONE: entry->aa_default = AA_None; break;
+ case FC_RGBA_NONE: entry->aa_default = antialias ? AA_Grey :
AA_None; break;
}
}
pFcPatternDestroy( match );
@@ -959,6 +964,30 @@
pFcPatternDestroy( pattern );
}
#endif /* SONAME_LIBFONTCONFIG */
+
+ /* now check Xft resources */
+ {
+ char *value;
+ BOOL antialias = TRUE;
+
+ wine_tsx11_lock();
+ if ((value = XGetDefault( gdi_display, "Xft", "antialias"
)))
+ {
+ if (tolower(value[0]) == 'f' || tolower(value[0]) == 'n'
||
+ value[0] == '0' || !strcasecmp( value, "off" ))
+ antialias = FALSE;
+ }
+ if ((value = XGetDefault( gdi_display, "Xft", "rgba" )))
+ {
+ TRACE( "Xft resource returned rgba '%s' antialias
%u\n", value, antialias );
+ if (!strcmp( value, "rgb" )) entry->aa_default = AA_RGB;
+ else if (!strcmp( value, "bgr" )) entry->aa_default =
AA_BGR;
+ else if (!strcmp( value, "vrgb" )) entry->aa_default =
AA_VRGB;
+ else if (!strcmp( value, "vbgr" )) entry->aa_default =
AA_VBGR;
+ else if (!strcmp( value, "none" )) entry->aa_default =
antialias ? AA_Grey : AA_None;
+ }
+ wine_tsx11_unlock();
+ }
}
else
entry->aa_default = AA_None;
Modified: vendor/wine/server/current/named_pipe.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/server/current/named_pipe.c?…
==============================================================================
--- vendor/wine/server/current/named_pipe.c [iso-8859-1] (original)
+++ vendor/wine/server/current/named_pipe.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -613,7 +613,7 @@
{
case ps_idle_server:
case ps_wait_connect:
- if (blocking && !is_overlapped( get_fd_options(fd) ))
+ if (blocking)
{
async_data_t new_data = *async_data;
if (!(wait_handle = alloc_wait_event( current->process ))) break;
Modified: vendor/wine/server/current/sock.c
URL:
http://svn.reactos.org/svn/reactos/vendor/wine/server/current/sock.c?rev=47…
==============================================================================
--- vendor/wine/server/current/sock.c [iso-8859-1] (original)
+++ vendor/wine/server/current/sock.c [iso-8859-1] Sat Jun 5 11:03:08 2010
@@ -817,6 +817,7 @@
case ENOTCONN: return STATUS_CONNECTION_DISCONNECTED;
case ETIMEDOUT: return STATUS_IO_TIMEOUT;
case ENETUNREACH: return STATUS_NETWORK_UNREACHABLE;
+ case EHOSTUNREACH: return STATUS_HOST_UNREACHABLE;
case ENETDOWN: return STATUS_NETWORK_BUSY;
case EPIPE:
case ECONNRESET: return STATUS_CONNECTION_RESET;