[Bug 7881] JRE 1.3.1: RuntimeException in sun.awt.Win32GraphicsDevice.getDefaultPixIDImpl(Native Method)

Wine Bugs wine-bugs at winehq.org
Wed Mar 28 15:11:08 CDT 2007


http://bugs.winehq.org/show_bug.cgi?id=7881





------- Additional Comments From focht at gmx.net  2007-28-03 15:11 -------
Hello,

from what i've seen looking at java jni code it basically boils down to
following (took the code directly from java impl. into a small C test program):

Java_sun_awt_Win32GraphicsDevice_getDefaultPixIDImpl calls
 ---> Java_sun_awt_Win32GraphicsDevice_isPixFmtSupported calls
   --->  int max = ::DescribePixelFormat(hDC, (int)pixFmtID,
sizeof(PIXELFORMATDESCRIPTOR), &pfd);

params:

hDC = ::GetDC( ::GetDesktopWindow())  (desktop hdc)
pixFmtId = 1

output:

--- native windows ---
DescribePixelFormat(): max=100, pfd.cColorBits=32, pfd.iPixelType=0,
pfd.dwFlags=0x34
Java_sun_awt_Win32GraphicsDevice_getDefaultPixIDImpl() returns 1
--- native windows ---

--- wine linux ---
DescribePixelFormat(): max=1, pfd.cColorBits=32, pfd.iPixelType=0, pfd.dwFlags=0x25
Java_sun_awt_Win32GraphicsDevice_getDefaultPixIDImpl() returns 0
--- wine linux ---

return "0" means no suitable Pixel Format id found -> exception thrown.

The problem is the "flags" field in pixel format descriptor.
Windows returns 0x34: PFD_SUPPORT_OPENGL | PFD_SUPPORT_GDI | PFD_DRAW_TO_WINDOW
Wine returns 0x25: PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER

The "required" flags field in that JRE implementation is: PFD_SUPPORT_GDI |
PFD_DRAW_TO_WINDOW

Basically: ((pfd.dwFlags & REQUIRED_FLAGS) == REQUIRED_FLAGS) to satisfy
function call (valid pixel id)
For windows this condition is satisfied - for the wine case not (PFD_SUPPORT_GDI
bits missing).
The wine X11 driver doesnt honour this value in
wine/dlls/winex11.drv/opengl.c:X11DRV_DescribePixelFormat() and
X11DRV_ChoosePixelFormat().

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the wine-bugs mailing list