Hi,All
I try to run a 3D application named "Unity 3d" with Wine, but failed.
And there is already a bug report about that:
Bug 18061 - Unity Indie Trial Editor window contents not drawn http://bugs.winehq.org/show_bug.cgi?id=18061
Now I try to find out the reason.
So, I follow the error messages:
... err:wgl:internal_SetPixelFormat Couldn't set format of the window, returning failure err:d3d:CreateContext SetPixelFormat failed on HDC=0x1534 for iPixelFormat=3 err:d3d:IWineD3DDeviceImpl_CreateSwapChain Failed to create a new context ...
do
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
vim dlls/winex11.drv/opengl.c
/* This function is the core of X11DRV_SetPixelFormat and X11DRV_SetPixelFormatWINE. * Both functions are the same except that X11DRV_SetPixelFormatWINE allows you to * set the pixel format multiple times. */ static BOOL internal_SetPixelFormat(X11DRV_PDEVICE *physDev, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd) { WineGLPixelFormat *fmt; int value; HWND hwnd;
....
if(!SendMessageW(hwnd, WM_X11DRV_SET_WIN_FORMAT, (WPARAM)fmt->fmt_id, 0)) { ERR("Couldn't set format of the window, returning failure\n"); return FALSE; } } .......
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
But i can not find the definition of function "SendMessageW",
in wine-1.1.30/dlls , i run " grep -ir --color SendMessageW . |grep spec ", just found something like this:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ./user32/user32.spec:@ stdcall SendMessageW(long long long long) ./unicows/unicows.spec:@ stdcall SendMessageW(long long long long) ./wtsapi32/wtsapi32.spec:@ stub WTSSendMessageW ./shlwapi/shlwapi.spec:136 stdcall -noname SendMessageWrapW(long long long long) user32.SendMessageW
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
And I am not familiar with C programming.
Any ideas? Thanks.
Esstentially what happens is that using the SendMessage in internal_SetPixelFormat we call 'set_win_format' in window.c. I can't say why it fails perhaps no parent window is up yet..
Roderick
On Tue, Oct 6, 2009 at 6:02 PM, a qi free4machine@gmail.com wrote:
Hi,All
I try to run a 3D application named "Unity 3d" with Wine, but failed.
And there is already a bug report about that:
Bug 18061 - Unity Indie Trial Editor window contents not drawn http://bugs.winehq.org/show_bug.cgi?id=18061
Now I try to find out the reason.
So, I follow the error messages:
... err:wgl:internal_SetPixelFormat Couldn't set format of the window, returning failure err:d3d:CreateContext SetPixelFormat failed on HDC=0x1534 for iPixelFormat=3 err:d3d:IWineD3DDeviceImpl_CreateSwapChain Failed to create a new context ...
do
vim dlls/winex11.drv/opengl.c
/* This function is the core of X11DRV_SetPixelFormat and X11DRV_SetPixelFormatWINE. * Both functions are the same except that X11DRV_SetPixelFormatWINE allows you to * set the pixel format multiple times. */ static BOOL internal_SetPixelFormat(X11DRV_PDEVICE *physDev, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd) { WineGLPixelFormat *fmt; int value; HWND hwnd;
....
if(!SendMessageW(hwnd, WM_X11DRV_SET_WIN_FORMAT, (WPARAM)fmt->fmt_id, 0)) { ERR("Couldn't set format of the window, returning failure\n"); return FALSE; } } .......
But i can not find the definition of function "SendMessageW",
in wine-1.1.30/dlls , i run " grep -ir --color SendMessageW . |grep spec ", just found something like this:
./user32/user32.spec:@ stdcall SendMessageW(long long long long) ./unicows/unicows.spec:@ stdcall SendMessageW(long long long long) ./wtsapi32/wtsapi32.spec:@ stub WTSSendMessageW ./shlwapi/shlwapi.spec:136 stdcall -noname SendMessageWrapW(long long long long) user32.SendMessageW
And I am not familiar with C programming.
Any ideas? Thanks.
On Tue, Oct 6, 2009 at 12:10 PM, Roderick Colenbrander thunderbird2k@gmail.com wrote:
Esstentially what happens is that using the SendMessage in internal_SetPixelFormat we call 'set_win_format' in window.c. I can't say why it fails perhaps no parent window is up yet..
Roderick
On Tue, Oct 6, 2009 at 6:02 PM, a qi free4machine@gmail.com wrote:
Hi,All
I try to run a 3D application named "Unity 3d" with Wine, but failed.
And there is already a bug report about that:
Bug 18061 - Unity Indie Trial Editor window contents not drawn http://bugs.winehq.org/show_bug.cgi?id=18061
Now I try to find out the reason.
So, I follow the error messages:
... err:wgl:internal_SetPixelFormat Couldn't set format of the window, returning failure err:d3d:CreateContext SetPixelFormat failed on HDC=0x1534 for iPixelFormat=3 err:d3d:IWineD3DDeviceImpl_CreateSwapChain Failed to create a new context ...
do
vim dlls/winex11.drv/opengl.c
/* This function is the core of X11DRV_SetPixelFormat and X11DRV_SetPixelFormatWINE. * Both functions are the same except that X11DRV_SetPixelFormatWINE allows you to * set the pixel format multiple times. */ static BOOL internal_SetPixelFormat(X11DRV_PDEVICE *physDev, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd) { WineGLPixelFormat *fmt; int value; HWND hwnd;
....
if(!SendMessageW(hwnd, WM_X11DRV_SET_WIN_FORMAT, (WPARAM)fmt->fmt_id, 0)) { ERR("Couldn't set format of the window, returning failure\n"); return FALSE; } } .......
But i can not find the definition of function "SendMessageW",
in wine-1.1.30/dlls , i run " grep -ir --color SendMessageW . |grep spec ", just found something like this:
./user32/user32.spec:@ stdcall SendMessageW(long long long long) ./unicows/unicows.spec:@ stdcall SendMessageW(long long long long) ./wtsapi32/wtsapi32.spec:@ stub WTSSendMessageW ./shlwapi/shlwapi.spec:136 stdcall -noname SendMessageWrapW(long long long long) user32.SendMessageW
And I am not familiar with C programming.
Any ideas? Thanks.
If you want to browse the source, your best bet is http://source.winehq.org . Just go to identifier search and search for SendMessageW. You don't need to do debug though - Jeff and Roderick outlined the problem pretty well.
Mike.