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?rev... ============================================================================== --- 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?rev... ============================================================================== --- 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.c... ============================================================================== --- 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_privat... ============================================================================== --- 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/bitm... ============================================================================== --- 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/font... ============================================================================== --- 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?r... ============================================================================== --- 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/cursorico... ============================================================================== --- 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.c... ============================================================================== --- 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/nonclient... ============================================================================== --- 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/com... ============================================================================== --- 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/dde... ============================================================================== --- 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/msg... ============================================================================== --- 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/win... ============================================================================== --- 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?rev... ============================================================================== --- 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/even... ============================================================================== --- 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/wind... ============================================================================== --- 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/xren... ============================================================================== --- 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?r... ============================================================================== --- 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=475... ============================================================================== --- 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;