Newsgroup: it.comp.java
Titolo: fullscreen mode - probabile bug del jre 1.4

sto provando la modalita' fullscreen del jre 1.4
e mi sono imbattuto subito in un problema che
vorrei sottoporre all'attenzione del ng
ho scritto questo semplice programma
----------------------------
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
public final class X
{
 private boolean debug = false;
 private X()
 {
  if (System.getProperty("debug","false").toLowerCase().equals("true"))
  {
   debug = true;
  }
  new demo();
 }
 public static void main(String[] args)
 {
  new X();
 }
 private class mouseListener extends MouseAdapter
 {
  public mouseListener()
  {
  }
  public void mousePressed(MouseEvent e)
  {
   Toolkit.getDefaultToolkit().beep();
  }
 }
 private class motionListener extends MouseMotionAdapter
 {
  public motionListener()
  {
  }
  public void mouseMoved(MouseEvent e)
  {
  }
 }
 private class demo extends Thread
 {
  public demo()
  {
   GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
   GraphicsDevice gd = ge.getDefaultScreenDevice();
   if (debug)
   {
    System.out.println("graphics device: " + gd.getIDstring());
   }
   if (gd.isFullScreenSupported())
   {
    GraphicsConfiguration gc = gd.getDefaultConfiguration();
    DisplayMode[] dm = gd.getDisplayModes();
    JWindow window = new JWindow(gc);
    Canvas canvas = new Canvas(gc);
    window.getContentPane().add(canvas);
    window.pack();
    DisplayMode mode = null;
    int max_displayrate = -1;
    for (int i = 0; i < dm.length; i++)
    {
     int dw = dm[i].getWidth();
     int dh = dm[i].getHeight();
     int db = dm[i].getBitDepth();
     int dr = dm[i].getRefreshRate();
     if (debug)
     {
      System.out.println("display mode " + i + ": " + dw + "x" +  dh + "x" +
db + "@" + dr + "Hz");
     }
     if ((dw == 800) && (dh == 600) && (db > 16))
     {
      if (dr > max_displayrate)
      {
       max_displayrate = dr;
       mode = dm[i];
      }
     }
    }
    if (mode != null)
    {
     gd.setFullScreenWindow(window);
     if (gd.isDisplayChangeSupported())
     {
      if (!mode.equals(gd.getDisplayMode()))
      {
       gd.setDisplayMode(mode);
      }
      window.show();
      canvas.requestFocus();
      window.enableInputMethods(false);
      canvas.addMouseListener(new mouseListener());
      canvas.addMouseMotionListener(new motionListener());
     }
     else
     {
         System.err.println("display change not allowed!!!");
      Toolkit.getDefaultToolkit().beep();
      System.exit(1);
     }
    }
    else
    {
        System.err.println("compatible display mode not found!!!");
     Toolkit.getDefaultToolkit().beep();
     System.exit(1);
    }
   }
   else
   {
    System.err.println("fullscreen mode not allowed!!!");
    Toolkit.getDefaultToolkit().beep();
    System.exit(1);
   }
   start();
  }
  public void run()
  {
   try
   {
    sleep(10000);
   }
   catch (Exception e)
   {
   }
   System.exit(0);
  }
 }
}
----------------------
il programma funziona, ma se lo mando in esecuzione
quando ho aperto qualche altra applicazione scritta in java, tali
applicazioni terminano generando un log che riporto qui di seguito
-----------------------------
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x42
Function=[Unknown.]
Library=(N/A)
NOTE: We are unable to locate the function name symbol for the error
      just occurred. Please refer to release documentation for possible
      reason and solutions.
Current Java thread:
 at sun.awt.windows.Win32SurfaceData.initOps(Native Method)
 at sun.awt.windows.Win32SurfaceData.<init>(Win32SurfaceData.java:335)
 at sun.awt.windows.Win32SurfaceData.createData(Win32SurfaceData.java:218)
 at
sun.awt.windows.WComponentPeer.replaceSurfaceData(WComponentPeer.java:321)
 - locked <032A7198> (a sun.awt.windows.WFramePeer)
 at sun.awt.windows.WComponentPeer.displayChanged(WComponentPeer.java:350)
 at sun.awt.windows.WCanvasPeer.displayChanged(WCanvasPeer.java:42)
 at sun.awt.windows.WPanelPeer.displayChanged(WPanelPeer.java:118)
 at sun.awt.windows.WWindowPeer.displayChanged(WWindowPeer.java:175)
 at sun.awt.SunDisplayChanger.notifyListeners(SunDisplayChanger.java:102)
 at sun.awt.Win32GraphicsDevice.displayChanged(Win32GraphicsDevice.java:333)
 at
sun.awt.Win32GraphicsEnvironment.displayChanged(Win32GraphicsEnvironment.jav
a:90)
 at sun.awt.windows.WToolkit$4.run(WToolkit.java:717)
 at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
 at java.awt.EventQueue.dispatchEvent(EventQueue.java:443)
 at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.ja
va:190)
 at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java
:144)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)
Dynamic libraries:
0x7D6C0000 - 0x7D6DD000  C:\WINDOWS\SYSTEM\IMAGEHLP.DLL
Local Time = Fri Mar 08 20:52:04 2002
Elapsed Time = 77
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.4.0-b92 mixed mode)
#
------------------------------
ho provato il codice con windows su due computer diversi e l'errore e' lo
stesso
si tratta di un bug del jre 1.4?
se nel codice elimino la chiamata a setDisplayMode
l'errore non viene piu' generato pero' il rientro dalla
modalita' fullscreen non e' indolore
iexplorer ad esempio non accetta piu' i tasti page up/page down
ciao
Andrea

iexplorer ad esempio non accetta piu' i tasti page up/page down
Nessun problema di questo genere per me (XP Pro).
-- 
Ciao
	Fabrizio C.

 ha scritto nel messaggio
news:0L8i8.8235$tC3.1...@twister1.libero.it...


 ha scritto nel messaggio
news:a6ddud$m1h$1...@lacerta.tiscalinet.it...


On Sat, 9 Mar 2002 18:26:32 +0100, Blondie wrote:
[CUT di 330 righe]
Potresti evitare di includere nel tuo post _tutto_ il messaggio a cui 
rispondi? Grazie. :-)
-- 
Ciao
	Fabrizio C.

 Hai provato a verificare sulla buglist di Sun?
mi sono perso nel sito della sun, riprovero'
ciao_O
Andrea

Chiedo scusa per la mia mancanza.
Eviterò d'ora in poi di includere ciò che è stato già scritto.
"Fabrizio Camera" <f.came...@Mtiscali.it> ha scritto nel messaggio
news:MPG.16f5e4ab8...@powernews.libero.it...


 Eviterò d'ora in poi di includere ciò che è stato già scritto.
Disse includendo quello che era appena stato scritto...! eh eh ;)
Sto scherzando, una decina di righe non possono dare molto fastidio...
Comunque, anche se lo sappiamo tutti, ripetiamo che la netiquette ci
insegna a quotare solo quello che serve e metterlo in testa alla
nostra risposta. Il quoting dell'intero messaggio cui si replica non è
previsto :), e in effetti non ha molto senso...
ciao
tityrus

 Durante l'utilizzo di un applicazione si è verificato il seguente errore :
[CUT]
Ho (forse) risolto i miei problemi .
Dato che l'applicazione
che ha generato l'errore usa le librerie JAVA3D,
ho provveduto a recuperare ed installare la nuova versione (1.2.1_04).
La versione precedente era per OpenGL ; questa volta ho installato la
versione per DirectX.
Francesco.