winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
November 2007
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
3 participants
757 discussions
Start a n
N
ew thread
Roderick Colenbrander : wined3d: Prevent unneeded context switches.
by Alexandre Julliard
13 Nov '07
13 Nov '07
Module: wine Branch: master Commit: 817b520c3d5ed88abb959dbbbd85aa53eecb661d URL:
http://source.winehq.org/git/wine.git/?a=commit;h=817b520c3d5ed88abb959dbbb…
Author: Roderick Colenbrander <thunderbird2k(a)gmx.net> Date: Fri Nov 9 16:38:50 2007 +0100 wined3d: Prevent unneeded context switches. --- dlls/wined3d/context.c | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-) diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 8311ab5..32d75b6 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -860,10 +860,17 @@ void ActivateContext(IWineD3DDeviceImpl *This, IWineD3DSurface *target, ContextU /* Activate the opengl context */ if(context != This->activeContext) { BOOL ret; - TRACE("Switching gl ctx to %p, hdc=%p ctx=%p\n", context, context->hdc, context->glCtx); - ret = pwglMakeCurrent(context->hdc, context->glCtx); - if(ret == FALSE) { - ERR("Failed to activate the new context\n"); + + /* Prevent an unneeded context switch as those are expensive */ + if(context->glCtx && (context->glCtx == pwglGetCurrentContext())) { + TRACE("Already using gl context %p\n", context->glCtx); + } + else { + TRACE("Switching gl ctx to %p, hdc=%p ctx=%p\n", context, context->hdc, context->glCtx); + ret = pwglMakeCurrent(context->hdc, context->glCtx); + if(ret == FALSE) { + ERR("Failed to activate the new context\n"); + } } This->activeContext = context; }
1
0
0
0
Roderick Colenbrander : wined3d: Flush GL calls after drawing to the drawable. This fixes apps that use multiple GL contexts.
by Alexandre Julliard
13 Nov '07
13 Nov '07
Module: wine Branch: master Commit: 9b0d661e43fdbd2ba08523ea46c9b889e54678f2 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=9b0d661e43fdbd2ba08523ea4…
Author: Roderick Colenbrander <thunderbird2k(a)gmx.net> Date: Thu Nov 8 23:08:07 2007 +0100 wined3d: Flush GL calls after drawing to the drawable. This fixes apps that use multiple GL contexts. --- dlls/wined3d/surface.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index d3cbc52..dadb7a0 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -3131,6 +3131,10 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *This, RECT * checkGLcall("glDisable(GL_ALPHA_TEST)"); } + /* Flush in case the drawable is used by multiple GL contexts */ + if(dstSwapchain && (dstSwapchain->num_contexts >= 2)) + glFlush(); + /* Unbind the texture */ glBindTexture(GL_TEXTURE_2D, 0); checkGLcall("glEnable glBindTexture"); @@ -3481,6 +3485,8 @@ struct coords { static inline void surface_blt_to_drawable(IWineD3DSurfaceImpl *This, const RECT *rect_in) { struct coords coords[4]; RECT rect; + IWineD3DSwapChain *swapchain = NULL; + HRESULT hr; IWineD3DDeviceImpl *device = This->resource.wineD3DDevice; if(rect_in) { @@ -3602,6 +3608,15 @@ static inline void surface_blt_to_drawable(IWineD3DSurfaceImpl *This, const RECT glDisable(GL_TEXTURE_CUBE_MAP_ARB); checkGLcall("glDisable(GL_TEXTURE_CUBE_MAP_ARB)"); } + + hr = IWineD3DSurface_GetContainer((IWineD3DSurface*)This, &IID_IWineD3DSwapChain, (void **) &swapchain); + if(hr == WINED3D_OK && swapchain) { + /* Make sure to flush the buffers. This is needed in apps like Red Alert II and Tiberian SUN that use multiple WGL contexts. */ + if(((IWineD3DSwapChainImpl*)swapchain)->num_contexts >= 2) + glFlush(); + + IWineD3DSwapChain_Release(swapchain); + } LEAVE_GL(); }
1
0
0
0
Dan Kegel : user32: Implement return value for DdeClientTransaction for XTYP_EXECUTE.
by Alexandre Julliard
13 Nov '07
13 Nov '07
Module: wine Branch: master Commit: aaa93200ad4f4880456fad0f4582e2e57695861f URL:
http://source.winehq.org/git/wine.git/?a=commit;h=aaa93200ad4f4880456fad0f4…
Author: Dan Kegel <dank(a)kegel.com> Date: Fri Nov 9 06:45:51 2007 -0800 user32: Implement return value for DdeClientTransaction for XTYP_EXECUTE. --- dlls/user32/dde_client.c | 9 +++++++++ dlls/user32/tests/dde.c | 7 ++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/dlls/user32/dde_client.c b/dlls/user32/dde_client.c index 3bf7175..1c766ab 100644 --- a/dlls/user32/dde_client.c +++ b/dlls/user32/dde_client.c @@ -985,6 +985,15 @@ static WDML_QUEUE_STATE WDML_HandleReply(WDML_CONV* pConv, MSG* msg, HDDEDATA* h case WM_DDE_TERMINATE: qs = WDML_HandleIncomingTerminate(pConv, msg, hdd); break; + case WM_DDE_ACK: + /* This happens at end of DdeClientTransaction XTYP_EXECUTE + * Without this assignment, DdeClientTransaction's return value is undefined + * See also
http://support.microsoft.com/kb/102574
+ */ + *hdd = (HDDEDATA)TRUE; + if (ack) + *ack = DDE_FACK; + break; } break; case WDML_QS_BLOCK: diff --git a/dlls/user32/tests/dde.c b/dlls/user32/tests/dde.c index 044e003..e90d8c9 100644 --- a/dlls/user32/tests/dde.c +++ b/dlls/user32/tests/dde.c @@ -414,11 +414,8 @@ static void test_ddeml_client(void) op = DdeClientTransaction((LPBYTE)hdata, -1, conversation, NULL, 0, XTYP_EXECUTE, default_timeout, &res); ret = DdeGetLastError(client_pid); ok(ret == DMLERR_NO_ERROR, "Expected DMLERR_NO_ERROR, got %d\n", ret); - todo_wine - { - ok(op == (HDDEDATA)TRUE, "Expected TRUE, got %p\n", op); - ok(res == DDE_FACK, "Expected DDE_FACK, got %d\n", res); - } + ok(op == (HDDEDATA)TRUE, "Expected TRUE, got %p\n", op); + ok(res == DDE_FACK, "Expected DDE_FACK, got %d\n", res); /* XTYP_EXECUTE, no data */ res = 0xdeadbeef;
1
0
0
0
Alexandre Julliard : user32: Remove a few traces that only duplicate the relay information.
by Alexandre Julliard
13 Nov '07
13 Nov '07
Module: wine Branch: master Commit: 6ff78347e2ef1f0028eff30c3a4fca47c159a166 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6ff78347e2ef1f0028eff30c3…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Nov 12 14:03:45 2007 +0100 user32: Remove a few traces that only duplicate the relay information. --- dlls/user32/class.c | 14 -------------- dlls/user32/dde_client.c | 2 -- dlls/user32/dde_misc.c | 5 ----- dlls/user32/hook.c | 4 ---- dlls/user32/input.c | 3 --- dlls/user32/menu.c | 6 +----- dlls/user32/message.c | 4 ---- dlls/user32/scroll.c | 2 -- 8 files changed, 1 insertions(+), 39 deletions(-) diff --git a/dlls/user32/class.c b/dlls/user32/class.c index 3e2e922..733dfa1 100644 --- a/dlls/user32/class.c +++ b/dlls/user32/class.c @@ -611,8 +611,6 @@ BOOL WINAPI UnregisterClassW( LPCWSTR className, HINSTANCE hInstance ) { CLASS *classPtr = NULL; - TRACE("%s %p\n",debugstr_w(className), hInstance); - SERVER_START_REQ( destroy_class ) { req->instance = hInstance; @@ -637,8 +635,6 @@ WORD WINAPI GetClassWord( HWND hwnd, INT offset ) if (offset < 0) return GetClassLongA( hwnd, offset ); - TRACE("%p %x\n",hwnd, offset); - if (!(class = get_class_ptr( hwnd, FALSE ))) return 0; if (class == CLASS_OTHER_PROCESS) @@ -676,8 +672,6 @@ static ULONG_PTR CLASS_GetClassLong( HWND hwnd, INT offset, UINT size, CLASS *class; ULONG_PTR retvalue = 0; - TRACE("%p %d\n", hwnd, offset); - if (!(class = get_class_ptr( hwnd, FALSE ))) return 0; if (class == CLASS_OTHER_PROCESS) @@ -835,8 +829,6 @@ WORD WINAPI SetClassWord( HWND hwnd, INT offset, WORD newval ) if (offset < 0) return SetClassLongA( hwnd, offset, (DWORD)newval ); - TRACE("%p %d %x\n", hwnd, offset, newval); - if (!(class = get_class_ptr( hwnd, TRUE ))) return 0; SERVER_START_REQ( set_class_info ) @@ -870,8 +862,6 @@ static ULONG_PTR CLASS_SetClassLong( HWND hwnd, INT offset, LONG_PTR newval, CLASS *class; ULONG_PTR retval = 0; - TRACE("%p %d %lx\n", hwnd, offset, newval); - if (!(class = get_class_ptr( hwnd, TRUE ))) return 0; if (offset >= 0) @@ -962,8 +952,6 @@ static ULONG_PTR CLASS_SetClassLong( HWND hwnd, INT offset, LONG_PTR newval, */ DWORD WINAPI SetClassLongW( HWND hwnd, INT offset, LONG newval ) { - TRACE("%p %d %x\n", hwnd, offset, newval); - return CLASS_SetClassLong( hwnd, offset, newval, sizeof(LONG), TRUE ); } @@ -973,8 +961,6 @@ DWORD WINAPI SetClassLongW( HWND hwnd, INT offset, LONG newval ) */ DWORD WINAPI SetClassLongA( HWND hwnd, INT offset, LONG newval ) { - TRACE("%p %d %x\n", hwnd, offset, newval); - return CLASS_SetClassLong( hwnd, offset, newval, sizeof(LONG), FALSE ); } diff --git a/dlls/user32/dde_client.c b/dlls/user32/dde_client.c index 3e22768..3bf7175 100644 --- a/dlls/user32/dde_client.c +++ b/dlls/user32/dde_client.c @@ -1224,8 +1224,6 @@ BOOL WINAPI DdeAbandonTransaction(DWORD idInst, HCONV hConv, DWORD idTransaction WDML_CONV* pConv; WDML_XACT* pXAct; - TRACE("(%08x,%p,%08x);\n", idInst, hConv, idTransaction); - if ((pInstance = WDML_GetInstance(idInst))) { if (hConv) diff --git a/dlls/user32/dde_misc.c b/dlls/user32/dde_misc.c index 974fde3..16f36d5 100644 --- a/dlls/user32/dde_misc.c +++ b/dlls/user32/dde_misc.c @@ -132,7 +132,6 @@ BOOL WINAPI UnpackDDElParam(UINT msg, LPARAM lParam, if (uiHi) *uiHi = 0; return FALSE; } - TRACE("unpacked: low %08lx, high %08lx\n", params[0], params[1]); if (uiLo) *uiLo = params[0]; if (uiHi) *uiHi = params[1]; GlobalUnlock( (HGLOBAL)lParam ); @@ -1126,8 +1125,6 @@ HSZ WINAPI DdeCreateStringHandleW(DWORD idInst, LPCWSTR psz, INT codepage) WDML_INSTANCE* pInstance; HSZ hsz = 0; - TRACE("(%d,%s,%d)\n", idInst, debugstr_w(psz), codepage); - pInstance = WDML_GetInstance(idInst); if (pInstance) { @@ -2026,8 +2023,6 @@ BOOL WINAPI DdeSetUserHandle(HCONV hConv, DWORD id, DWORD hUser) { WDML_CONV* pConv; - TRACE("(%p,%x,%x)\n", hConv, id, hUser); - pConv = WDML_GetConv(hConv, FALSE); if (pConv == NULL) return FALSE; diff --git a/dlls/user32/hook.c b/dlls/user32/hook.c index 75e31e4..ed010a8 100644 --- a/dlls/user32/hook.c +++ b/dlls/user32/hook.c @@ -518,8 +518,6 @@ BOOL WINAPI UnhookWindowsHookEx( HHOOK hhook ) { BOOL ret; - TRACE( "%p\n", hhook ); - SERVER_START_REQ( remove_hook ) { req->handle = hhook; @@ -712,8 +710,6 @@ BOOL WINAPI UnhookWinEvent(HWINEVENTHOOK hEventHook) { BOOL ret; - TRACE( "%p\n", hEventHook ); - SERVER_START_REQ( remove_hook ) { req->handle = hEventHook; diff --git a/dlls/user32/input.c b/dlls/user32/input.c index b385ee4..dfb5201 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -506,8 +506,6 @@ BOOL WINAPI SetKeyboardState( LPBYTE state ) { BOOL ret; - TRACE("(%p)\n", state); - SERVER_START_REQ( set_key_state ) { req->tid = GetCurrentThreadId(); @@ -580,7 +578,6 @@ WORD WINAPI VkKeyScanExW(WCHAR cChar, HKL dwhkl) */ DWORD WINAPI OemKeyScan(WORD wOemChar) { - TRACE("(%d)\n", wOemChar); return wOemChar; } diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c index 59f84b9..3a93121 100644 --- a/dlls/user32/menu.c +++ b/dlls/user32/menu.c @@ -3580,7 +3580,6 @@ DWORD WINAPI CheckMenuItem( HMENU hMenu, UINT id, UINT flags ) MENUITEM *item; DWORD ret; - TRACE("menu=%p id=%04x flags=%04x\n", hMenu, id, flags ); if (!(item = MENU_FindItem( &hMenu, &id, flags ))) return -1; ret = item->fState & MF_CHECKED; if (flags & MF_CHECKED) item->fState |= MF_CHECKED; @@ -3951,8 +3950,7 @@ BOOL WINAPI SetMenuItemBitmaps( HMENU hMenu, UINT nPos, UINT wFlags, HBITMAP hNewUnCheck, HBITMAP hNewCheck) { MENUITEM *item; - TRACE("(%p, %04x, %04x, %p, %p)\n", - hMenu, nPos, wFlags, hNewCheck, hNewUnCheck); + if (!(item = MENU_FindItem( &hMenu, &nPos, wFlags ))) return FALSE; if (!hNewCheck && !hNewUnCheck) @@ -4884,8 +4882,6 @@ BOOL WINAPI CheckMenuRadioItem(HMENU hMenu, MENUITEM *mi_first = NULL, *mi_check; HMENU m_first, m_check; - TRACE("%p: %u-%u, check %u, flags %04x\n", hMenu, first, last, check, bypos); - for (i = first; i <= last; i++) { UINT pos = i; diff --git a/dlls/user32/message.c b/dlls/user32/message.c index 46333b6..53d1c1d 100644 --- a/dlls/user32/message.c +++ b/dlls/user32/message.c @@ -3486,8 +3486,6 @@ BOOL WINAPI KillTimer( HWND hwnd, UINT_PTR id ) { BOOL ret; - TRACE("%p %ld\n", hwnd, id ); - SERVER_START_REQ( kill_win_timer ) { req->win = hwnd; @@ -3507,8 +3505,6 @@ BOOL WINAPI KillSystemTimer( HWND hwnd, UINT_PTR id ) { BOOL ret; - TRACE("%p %ld\n", hwnd, id ); - SERVER_START_REQ( kill_win_timer ) { req->win = hwnd; diff --git a/dlls/user32/scroll.c b/dlls/user32/scroll.c index ec2fe13..f07bf75 100644 --- a/dlls/user32/scroll.c +++ b/dlls/user32/scroll.c @@ -2020,8 +2020,6 @@ BOOL WINAPI EnableScrollBar( HWND hwnd, UINT nBar, UINT flags ) BOOL bFineWithMe; SCROLLBAR_INFO *infoPtr; - TRACE("%p %d %d\n", hwnd, nBar, flags ); - flags &= ESB_DISABLE_BOTH; if (nBar == SB_BOTH)
1
0
0
0
Alexandre Julliard : oleaut32: Fixed asm proxys to support more than 128 methods.
by Alexandre Julliard
12 Nov '07
12 Nov '07
Module: wine Branch: master Commit: 2a2e303dc5598de6e97d4667b3a84a3c26b91c0e URL:
http://source.winehq.org/git/wine.git/?a=commit;h=2a2e303dc5598de6e97d4667b…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Nov 12 13:18:38 2007 +0100 oleaut32: Fixed asm proxys to support more than 128 methods. Reported by Martin Kochanski. --- dlls/oleaut32/tmarshal.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dlls/oleaut32/tmarshal.c b/dlls/oleaut32/tmarshal.c index 4a5ad89..75e3d3b 100644 --- a/dlls/oleaut32/tmarshal.c +++ b/dlls/oleaut32/tmarshal.c @@ -372,12 +372,13 @@ static HRESULT num_of_funcs(ITypeInfo *tinfo, unsigned int *num) typedef struct _TMAsmProxy { BYTE popleax; BYTE pushlval; - BYTE nr; + DWORD nr; BYTE pushleax; BYTE lcall; DWORD xcall; BYTE lret; WORD bytestopop; + BYTE nop; } TMAsmProxy; #include "poppack.h" @@ -1709,7 +1710,7 @@ static HRESULT init_proxy_entry_point(TMProxyImpl *proxy, unsigned int num) * arg3 arg2 arg1 <method> <returnptr> */ xasm->popleax = 0x58; - xasm->pushlval = 0x6a; + xasm->pushlval = 0x68; xasm->nr = num; xasm->pushleax = 0x50; xasm->lcall = 0xe8; /* relative jump */ @@ -1717,6 +1718,7 @@ static HRESULT init_proxy_entry_point(TMProxyImpl *proxy, unsigned int num) xasm->xcall -= (DWORD)&(xasm->lret); xasm->lret = 0xc2; xasm->bytestopop = (nrofargs+2)*4; /* pop args, This, iMethod */ + xasm->nop = 0x90; proxy->lpvtbl[num] = xasm; #else FIXME("not implemented on non i386\n"); @@ -1754,7 +1756,7 @@ PSFacBuf_CreateProxy( proxy = CoTaskMemAlloc(sizeof(TMProxyImpl)); if (!proxy) return E_OUTOFMEMORY; - assert(sizeof(TMAsmProxy) == 12); + assert(sizeof(TMAsmProxy) == 16); proxy->dispatch = NULL; proxy->dispatch_proxy = NULL;
1
0
0
0
Alistair Leslie-Hughes : clusapi: Corrected value in GetNodeClusterState.
by Alexandre Julliard
12 Nov '07
12 Nov '07
Module: wine Branch: master Commit: 0fade3c13901640563e377fb8c489afdbb9c0215 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0fade3c13901640563e377fb8…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Mon Nov 12 21:01:19 2007 +1100 clusapi: Corrected value in GetNodeClusterState. --- dlls/clusapi/clusapi.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dlls/clusapi/clusapi.c b/dlls/clusapi/clusapi.c index 78dfd0f..734676c 100644 --- a/dlls/clusapi/clusapi.c +++ b/dlls/clusapi/clusapi.c @@ -30,12 +30,21 @@ WINE_DEFAULT_DEBUG_CHANNEL(clusapi); /*********************************************************************** * GetNodeClusterState (CLUSAPI.@) * + * PARAMS + * lpszNodeName [I] Optional Pointer to a NULL terminated unicode string + * pdwClusterState [O] Current state of the cluster + * 0x00 - Cluster not installed. + * 0x01 - Cluster not configured. + * 0x03 - Cluster not running. + * 0x13 - Cluster is running. */ DWORD WINAPI GetNodeClusterState(LPCWSTR lpszNodeName, LPDWORD pdwClusterState) { - FIXME("(%s,%p) stub!\n",debugstr_w(lpszNodeName),pdwClusterState); + FIXME("(%s,%p,%u) stub!\n",debugstr_w(lpszNodeName),pdwClusterState, *pdwClusterState); - return 0; + *pdwClusterState = 0; + + return ERROR_SUCCESS; }
1
0
0
0
Kai Blin : ws2_32: Cope with buggy apps passing setsockopt optval as a value instead of a pointer .
by Alexandre Julliard
12 Nov '07
12 Nov '07
Module: wine Branch: master Commit: d35c13c621a157fcbb60ba4f44a5eab29cfb49be URL:
http://source.winehq.org/git/wine.git/?a=commit;h=d35c13c621a157fcbb60ba4f4…
Author: Kai Blin <kai.blin(a)gmail.com> Date: Mon Nov 12 11:42:28 2007 +0100 ws2_32: Cope with buggy apps passing setsockopt optval as a value instead of a pointer. --- dlls/ws2_32/socket.c | 7 +++++++ dlls/ws2_32/tests/sock.c | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletions(-) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 4c185d8..f4111cd 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -2812,6 +2812,13 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, TRACE("socket: %04lx, level 0x%x, name 0x%x, ptr %p, len %d\n", s, level, optname, optval, optlen); + /* some broken apps pass the value directly instead of a pointer to it */ + if(IS_INTRESOURCE(optval)) + { + SetLastError(WSAEFAULT); + return SOCKET_ERROR; + } + switch(level) { case WS_SOL_SOCKET: diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 8225f5f..858d0b5 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -850,7 +850,7 @@ LINGER linger_testvals[] = { static void test_set_getsockopt(void) { SOCKET s; - int i, err; + int i, err, lasterr; int timeout; LINGER lingval; int size; @@ -889,6 +889,15 @@ static void test_set_getsockopt(void) lingval.l_onoff, lingval.l_linger, linger_testvals[i].l_onoff, linger_testvals[i].l_linger); } + /* Test for erroneously passing a value instead of a pointer as optval */ + size = sizeof(char); + err = setsockopt(s, SOL_SOCKET, SO_DONTROUTE, (char *)1, size); + ok(err == SOCKET_ERROR, "setsockopt with optval being a value passed " + "instead of failing.\n"); + lasterr = WSAGetLastError(); + ok(lasterr == WSAEFAULT, "setsockopt with optval being a value " + "returned 0x%08x, not WSAEFAULT(0x%08x)\n", + lasterr, WSAEFAULT); closesocket(s); }
1
0
0
0
David Adam : d3dx8: Implement D3DXVec3Unproject.
by Alexandre Julliard
12 Nov '07
12 Nov '07
Module: wine Branch: master Commit: 147600b671826f4f0ca52ffb95b613b839110dcb URL:
http://source.winehq.org/git/wine.git/?a=commit;h=147600b671826f4f0ca52ffb9…
Author: David Adam <David.Adam(a)math.cnrs.fr> Date: Sun Nov 11 17:38:20 2007 +0100 d3dx8: Implement D3DXVec3Unproject. --- dlls/d3dx8/d3dx8.spec | 2 +- dlls/d3dx8/math.c | 15 +++++++++++++++ dlls/d3dx8/tests/math.c | 6 ++++++ include/d3dx8math.h | 1 + 4 files changed, 23 insertions(+), 1 deletions(-) diff --git a/dlls/d3dx8/d3dx8.spec b/dlls/d3dx8/d3dx8.spec index 50d4cc3..82c9586 100644 --- a/dlls/d3dx8/d3dx8.spec +++ b/dlls/d3dx8/d3dx8.spec @@ -13,7 +13,7 @@ @ stdcall D3DXVec3TransformCoord(ptr ptr ptr) @ stdcall D3DXVec3TransformNormal(ptr ptr ptr) @ stdcall D3DXVec3Project(ptr ptr ptr ptr ptr ptr) -@ stub D3DXVec3Unproject +@ stdcall D3DXVec3Unproject(ptr ptr ptr ptr ptr ptr) @ stdcall D3DXVec4Cross(ptr ptr ptr ptr) @ stdcall D3DXVec4Normalize(ptr ptr) @ stdcall D3DXVec4Hermite(ptr ptr ptr ptr ptr long) diff --git a/dlls/d3dx8/math.c b/dlls/d3dx8/math.c index ddc2df2..7f96583 100644 --- a/dlls/d3dx8/math.c +++ b/dlls/d3dx8/math.c @@ -606,6 +606,21 @@ D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 } +D3DXVECTOR3* WINAPI D3DXVec3Unproject(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT8 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld) +{ + D3DXMATRIX m1, m2, m3; + D3DXVECTOR3 vec; + + D3DXMatrixMultiply(&m1, pworld, pview); + D3DXMatrixMultiply(&m2, &m1, pprojection); + D3DXMatrixInverse(&m3, NULL, &m2); + vec.x = 2.0f * ( pv->x - pviewport->X ) / pviewport->Width - 1.0f; + vec.y = 1.0f - 2.0f * ( pv->y - pviewport->Y ) / pviewport->Height; + vec.z = ( pv->z - pviewport->MinZ) / ( pviewport->MaxZ - pviewport->MinZ ); + D3DXVec3TransformCoord(pout, &vec, &m3); + return pout; +} + /*_________________D3DXVec4_____________________*/ D3DXVECTOR4* WINAPI D3DXVec4BaryCentric(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT f, FLOAT g) diff --git a/dlls/d3dx8/tests/math.c b/dlls/d3dx8/tests/math.c index 70e5240..65a0e5a 100644 --- a/dlls/d3dx8/tests/math.c +++ b/dlls/d3dx8/tests/math.c @@ -878,6 +878,12 @@ static void D3X8Vector3Test(void) expectedvec.x = 57.0f; expectedvec.y = 74.0f; expectedvec.z = 91.0f; D3DXVec3TransformNormal(&gotvec,&u,&mat); expect_vec3(expectedvec,gotvec); + +/*_______________D3DXVec3Unproject_________________________*/ + expectedvec.x = -2.913411f; expectedvec.y = 1.593215f; expectedvec.z = 0.380724f; + D3DXMatrixPerspectiveFovLH(&projection,D3DX_PI/4.0f,20.0f/17.0f,1.0f,1000.0f); + D3DXVec3Unproject(&gotvec,&u,&viewport,&projection,&view,&world); + expect_vec3(expectedvec,gotvec); } static void D3X8Vector4Test(void) diff --git a/include/d3dx8math.h b/include/d3dx8math.h index 93acf7b..9916490 100644 --- a/include/d3dx8math.h +++ b/include/d3dx8math.h @@ -304,6 +304,7 @@ D3DXVECTOR3* WINAPI D3DXVec3Project(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CO D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); D3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR3* WINAPI D3DXVec3Unproject(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT8 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld); D3DXVECTOR4* WINAPI D3DXVec4BaryCentric(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT f, FLOAT g); D3DXVECTOR4* WINAPI D3DXVec4CatmullRom(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv0, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT s);
1
0
0
0
David Adam : d3dx8: Implement D3XMatrixVec3Project.
by Alexandre Julliard
12 Nov '07
12 Nov '07
Module: wine Branch: master Commit: 6c902b42d5df951f67748482f3c643fe1c367e88 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6c902b42d5df951f67748482f…
Author: David Adam <David.Adam(a)math.cnrs.fr> Date: Sun Nov 11 17:33:45 2007 +0100 d3dx8: Implement D3XMatrixVec3Project. --- dlls/d3dx8/d3dx8.spec | 2 +- dlls/d3dx8/math.c | 14 ++++++++++++++ dlls/d3dx8/tests/math.c | 24 +++++++++++++++++++++++- include/d3dx8math.h | 1 + 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/dlls/d3dx8/d3dx8.spec b/dlls/d3dx8/d3dx8.spec index 4b29b61..50d4cc3 100644 --- a/dlls/d3dx8/d3dx8.spec +++ b/dlls/d3dx8/d3dx8.spec @@ -12,7 +12,7 @@ @ stdcall D3DXVec3Transform(ptr ptr ptr) @ stdcall D3DXVec3TransformCoord(ptr ptr ptr) @ stdcall D3DXVec3TransformNormal(ptr ptr ptr) -@ stub D3DXVec3Project +@ stdcall D3DXVec3Project(ptr ptr ptr ptr ptr ptr) @ stub D3DXVec3Unproject @ stdcall D3DXVec4Cross(ptr ptr ptr ptr) @ stdcall D3DXVec4Normalize(ptr ptr) diff --git a/dlls/d3dx8/math.c b/dlls/d3dx8/math.c index 6468867..ddc2df2 100644 --- a/dlls/d3dx8/math.c +++ b/dlls/d3dx8/math.c @@ -553,6 +553,20 @@ D3DXVECTOR3* WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv) return pout; } +D3DXVECTOR3* WINAPI D3DXVec3Project(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT8 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld) +{ + D3DXMATRIX m1, m2; + D3DXVECTOR3 vec; + + D3DXMatrixMultiply(&m1, pworld, pview); + D3DXMatrixMultiply(&m2, &m1, pprojection); + D3DXVec3TransformCoord(&vec, pv, &m2); + pout->x = pviewport->X + ( 1.0f + vec.x ) * pviewport->Width / 2.0f; + pout->y = pviewport->Y + ( 1.0f - vec.y ) * pviewport->Height / 2.0f; + pout->z = pviewport->MinZ + vec.z * ( pviewport->MaxZ - pviewport->MinZ ); + return pout; +} + D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm) { pout->x = pm->u.m[0][0] * pv->x + pm->u.m[1][0] * pv->y + pm->u.m[2][0] * pv->z + pm->u.m[3][0]; diff --git a/dlls/d3dx8/tests/math.c b/dlls/d3dx8/tests/math.c index 6a20a30..70e5240 100644 --- a/dlls/d3dx8/tests/math.c +++ b/dlls/d3dx8/tests/math.c @@ -692,10 +692,11 @@ static void D3X8Vector2Test(void) static void D3X8Vector3Test(void) { + D3DVIEWPORT8 viewport; D3DXVECTOR3 expectedvec, gotvec, nul, nulproj, u, v, w, x; LPD3DXVECTOR3 funcpointer; D3DXVECTOR4 expectedtrans, gottrans; - D3DXMATRIX mat; + D3DXMATRIX mat, projection, view, world; FLOAT coeff1, coeff2, expected, got, scale; nul.x = 0.0f; nul.y = 0.0f; nul.z = 0.0f; @@ -704,11 +705,26 @@ static void D3X8Vector3Test(void) w.x = 3.0f; w.y = -5.0f; w.z = 7.0f; x.x = 4.0f; x.y = 1.0f; x.z = 11.0f; + viewport.Width = 800; viewport.MinZ = 0.2f; viewport.X = 10; + viewport.Height = 680; viewport.MaxZ = 0.9f; viewport.Y = 5; + U(mat).m[0][0] = 1.0f; U(mat).m[0][1] = 2.0f; U(mat).m[0][2] = 3.0f; U(mat).m[0][3] = 4.0f; U(mat).m[1][0] = 5.0f; U(mat).m[1][1] = 6.0f; U(mat).m[1][2] = 7.0f; U(mat).m[1][3] = 8.0f; U(mat).m[2][0] = 9.0f; U(mat).m[2][1] = 10.0f; U(mat).m[2][2] = 11.0f; U(mat).m[2][3] = 12.0f; U(mat).m[3][0] = 13.0f; U(mat).m[3][1] = 14.0f; U(mat).m[3][2] = 15.0f; U(mat).m[3][3] = 16.0f; + view.m[0][1] = 5.0f; view.m[0][2] = 7.0f; view.m[0][3] = 8.0f; + view.m[1][0] = 11.0f; view.m[1][2] = 16.0f; view.m[1][3] = 33.0f; + view.m[2][0] = 19.0f; view.m[2][1] = -21.0f; view.m[2][3] = 43.0f; + view.m[3][0] = 2.0f; view.m[3][1] = 3.0f; view.m[3][2] = -4.0f; + view.m[0][0] = 10.0f; view.m[1][1] = 20.0f; view.m[2][2] = 30.0f; + view.m[3][3] = -40.0f; + + world.m[0][0] = 21.0f; world.m[0][1] = 2.0f; world.m[0][2] = 3.0f; world.m[0][3] = 4.0; + world.m[1][0] = 5.0f; world.m[1][1] = 23.0f; world.m[1][2] = 7.0f; world.m[1][3] = 8.0f; + world.m[2][0] = -8.0f; world.m[2][1] = -7.0f; world.m[2][2] = 25.0f; world.m[2][3] = -5.0f; + world.m[3][0] = -4.0f; world.m[3][1] = -3.0f; world.m[3][2] = -2.0f; world.m[3][3] = 27.0f; + coeff1 = 2.0f; coeff2 = 5.0f; scale = -6.5f; @@ -817,6 +833,12 @@ static void D3X8Vector3Test(void) D3DXVec3Normalize(&gotvec,&nul); expect_vec3(expectedvec,gotvec); +/*_______________D3DXVec3Project_________________________*/ + expectedvec.x = 1135.721924f; expectedvec.y = 147.086914f; expectedvec.z = 0.153412f; + D3DXMatrixPerspectiveFovLH(&projection,D3DX_PI/4.0f,20.0f/17.0f,1.0f,1000.0f); + D3DXVec3Project(&gotvec,&u,&viewport,&projection,&view,&world); + expect_vec3(expectedvec,gotvec); + /*_______________D3DXVec3Scale____________________________*/ expectedvec.x = -58.5f; expectedvec.y = -39.0f; expectedvec.z = -13.0f; D3DXVec3Scale(&gotvec,&u,scale); diff --git a/include/d3dx8math.h b/include/d3dx8math.h index e2cfc75..93acf7b 100644 --- a/include/d3dx8math.h +++ b/include/d3dx8math.h @@ -300,6 +300,7 @@ D3DXVECTOR3* WINAPI D3DXVec3BaryCentric(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv D3DXVECTOR3* WINAPI D3DXVec3CatmullRom( D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv0, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT s); D3DXVECTOR3* WINAPI D3DXVec3Hermite(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pt1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pt2, FLOAT s); D3DXVECTOR3* WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv); +D3DXVECTOR3* WINAPI D3DXVec3Project(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT8 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld); D3DXVECTOR4* WINAPI D3DXVec3Transform(D3DXVECTOR4 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); D3DXVECTOR3* WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); D3DXVECTOR3* WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm);
1
0
0
0
David Adam : d3dx8: Implement D3XMatrixMultiplyTranspose.
by Alexandre Julliard
12 Nov '07
12 Nov '07
Module: wine Branch: master Commit: 3231c01c42acc4d1ccffb1712ec43f2236f8d6fd URL:
http://source.winehq.org/git/wine.git/?a=commit;h=3231c01c42acc4d1ccffb1712…
Author: David Adam <David.Adam(a)math.cnrs.fr> Date: Sun Nov 11 17:24:43 2007 +0100 d3dx8: Implement D3XMatrixMultiplyTranspose. --- dlls/d3dx8/d3dx8.spec | 1 + dlls/d3dx8/math.c | 9 +++++++++ dlls/d3dx8/tests/math.c | 8 ++++++++ include/d3dx8math.h | 1 + 4 files changed, 19 insertions(+), 0 deletions(-) diff --git a/dlls/d3dx8/d3dx8.spec b/dlls/d3dx8/d3dx8.spec index 391da82..4b29b61 100644 --- a/dlls/d3dx8/d3dx8.spec +++ b/dlls/d3dx8/d3dx8.spec @@ -22,6 +22,7 @@ @ stdcall D3DXVec4Transform(ptr ptr ptr) @ stdcall D3DXMatrixfDeterminant(ptr) @ stdcall D3DXMatrixMultiply(ptr ptr ptr) +@ stdcall D3DXMatrixMultiplyTranspose(ptr ptr ptr) @ stdcall D3DXMatrixTranspose(ptr ptr) @ stdcall D3DXMatrixInverse(ptr ptr ptr) @ stdcall D3DXMatrixScaling(ptr long long long) diff --git a/dlls/d3dx8/math.c b/dlls/d3dx8/math.c index 6179dde..6468867 100644 --- a/dlls/d3dx8/math.c +++ b/dlls/d3dx8/math.c @@ -158,6 +158,15 @@ D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, C return pout; } +D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2) +{ + D3DXMATRIX temp; + + D3DXMatrixMultiply(&temp, pm1, pm2); + D3DXMatrixTranspose(pout, &temp); + return pout; +} + D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf) { D3DXMatrixIdentity(pout); diff --git a/dlls/d3dx8/tests/math.c b/dlls/d3dx8/tests/math.c index a796c6e..6a20a30 100644 --- a/dlls/d3dx8/tests/math.c +++ b/dlls/d3dx8/tests/math.c @@ -235,6 +235,14 @@ static void D3DXMatrixTest(void) D3DXMatrixMultiply(&gotmat,&mat,&mat2); expect_mat(expectedmat,gotmat); +/*____________D3DXMatrixMultiplyTranspose____*/ + expectedmat.m[0][0] = 73.0f; expectedmat.m[0][1] = 231.0f; expectedmat.m[0][2] = 239.0f; expectedmat.m[0][3] = -164.0f; + expectedmat.m[1][0] = 193.0f; expectedmat.m[1][1] = 551.0f; expectedmat.m[1][2] = 523.0f; expectedmat.m[1][3] = -320.0; + expectedmat.m[2][0] = -197.0f; expectedmat.m[2][1] = -489.0f; expectedmat.m[2][2] = -400.0f; expectedmat.m[2][3] = 187.0f; + expectedmat.m[3][0] = -77.0f; expectedmat.m[3][1] = -169.0f; expectedmat.m[3][2] = -116.0f; expectedmat.m[3][3] = 31.0f; + D3DXMatrixMultiplyTranspose(&gotmat,&mat,&mat2); + expect_mat(expectedmat,gotmat); + /*____________D3DXMatrixOrthoLH_______________*/ U(expectedmat).m[0][0] = 0.8f; U(expectedmat).m[0][1] = 0.0f; U(expectedmat).m[0][2] = 0.0f; U(expectedmat).m[0][3] = 0.0f; U(expectedmat).m[1][0] = 0.0f; U(expectedmat).m[1][1] = 0.270270f; U(expectedmat).m[1][2] = 0.0f; U(expectedmat).m[1][3] = 0.0f; diff --git a/include/d3dx8math.h b/include/d3dx8math.h index 2d236df..e2cfc75 100644 --- a/include/d3dx8math.h +++ b/include/d3dx8math.h @@ -264,6 +264,7 @@ D3DXMATRIX* WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, CONS D3DXMATRIX* WINAPI D3DXMatrixLookAtLH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup); D3DXMATRIX* WINAPI D3DXMatrixLookAtRH(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup); D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2); +D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2); D3DXMATRIX* WINAPI D3DXMatrixOrthoLH(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
1
0
0
0
← Newer
1
...
40
41
42
43
44
45
46
...
76
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Results per page:
10
25
50
100
200