JDK-6614214 : D3D: the pipeline does not enumerate adapters correctly
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 6u5
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_xp
  • CPU: generic
  • Submitted: 2007-10-08
  • Updated: 2010-10-14
  • Resolved: 2007-10-23
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6
6u10 b06Fixed
Description
In the pipeline we assume that the numeration of the d3d
adapters is the same as GDI monitors. This may not be the case
if the user changed the primary display in the control panel.

This happens quite often on notebooks which are connected to 
external monitors - the external monitor often becomes the
primary.

The result of this is that the pipeline could create surfaces
on wrong devices. Also, a full-screen window may appear on
the wrong screen (since wrong device will enter the FS mode).

Comments
SUGGESTED FIX http://sa.sfbay.sun.com/projects/java2d_data/6u5/6614214.0
09-10-2007

EVALUATION As per description. To fix this, when creating a surface we'll convert the GDI screen number to the d3d adapter number. Another improvement is better detection of addition and removal of displays. Currently we only recreate the pipeline if the new number of displays is different from the current one, in which case we re-init the pipeline. But this will not work in all cases: if the user added one monitor and removed another at the same time, for example. To detect this case we will compare the new the monitor handles which change when new monitor is added/removed, to the ones we have already.
08-10-2007