CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Swing][JOGL][Java7] Crash Swing 2écrans

Shao
Shao
Niveau 10
04 septembre 2012 à 14:07:23

Bonjour :-)

Je poste ce message à tout hasard, dans le cas où quelqu'un aurait déjà rencontré ce problème récemment.

Pour le reproduire, il faut impérativement 2 écrans.

J'ai découvert ce bug sur un gros logiciel de ma boîte, ce qui m'a poussé à reproduire le bug sur un petit exemple tout simple : une bête JFrame contenant 2 boutons et un JPanel. Ce dernier est composé d'un contexte JOGL (rendu d'une simple image).
Donc très facile et court à implémenter.

Tout fonctionnait bien jusqu'à l'arrivée de Java 7.
Depuis, lorsqu'on déplace la fenêtre d'un écran à l'autre, au moment où la séparation des deux écrans coupe exactement la fenêtre de mon appli en 2, très fréquemment, les composants Swing crashent... Et il ne reste plus qu'à redémarrer l'appli :/
Parfois, la fenêtre se déplace indéfiniment du premier écran au second et inversement, en boucle.

Ma question : quelqu'un aurait-il déjà rencontré ce problème ? Quelqu'un saurait-il si le bug a déjà été signalé quelque part ? Ou, mais je n'y crois pas trop, un semblant de correction/workaround ?

Le problème étant très gênant en pratique et nécessitant une correction la plus rapide possible, je tente le coup d'en parler sur pas mal d'endroits, dont ici :rouge:

Merci d'avance :oui:

Bunyan
Bunyan
Niveau 17
04 septembre 2012 à 14:16:14

Y'a pas un stacktrace quelconque ? Une exception lancée ? Quelque chose de consistant quoi ^^'

godrik
godrik
Niveau 30
04 septembre 2012 à 15:04:58

Est ce que les machines ont une carte graphique ou deux cartes graphiques?

Shao
Shao
Niveau 10
04 septembre 2012 à 15:52:32

Une seule carte graphique, et malheureusement aucune trace... Il semblerait que Java7 finisse par appeler, au changement d'écran, la méthode Component.setGraphicsConfiguration, qui fait un removeNotify suivit d'un addNotify. Là où ça pose réellement problème, c'est que sur les composants qui gèrent un contexte OpenGL, removeNotify et addNotify sont respectivement utilisés pour détruire et créer le contexte OpenGL, ce qui fait clignoter la fenêtre, la téléporte sur l'autre écran, et ça fait crasher les composants Swing. Et comme nos rendus peuvent etre tres lourds, les performances sont tres nettement impactées :/

Shao
Shao
Niveau 10
04 septembre 2012 à 15:56:33

Autre détail que j'ai oublié de préciser : le bug est présent sur Linux (ici une Red Hat, mais de meme sur une Fedora). Il semblerait que sur Windows le bug n'existe pas : Component.setGraphicsConfiguration est bien appelée, mais il considère qu'une mise à jour du GraphicsConfig n'est pas nécessaire, et donc les notify ne sont pas appelés.

godrik
godrik
Niveau 30
04 septembre 2012 à 16:24:24

Question stupide: sous linux, es tu sur d'utiliser la machine virtuelle d'oracle et pas openjdk?

Shao
Shao
Niveau 10
04 septembre 2012 à 16:37:42

Oui oui sûr ^^

godrik
godrik
Niveau 30
04 septembre 2012 à 16:48:42

c'est pas impossible que le driver graphique soit pourri as tu eu l'occasions d'essayer sur differente machine/configuration sous linux?

Shao
Shao
Niveau 10
04 septembre 2012 à 17:14:37

On est plusieurs dizaines à rencontrer le probleme, sur tout un tas de cartes graphiques différentes, certains étant même passés sur les derniers drivers dispo, mais le problème est présent partout ^^

godrik
godrik
Niveau 30
04 septembre 2012 à 17:50:34

tu peux fournir ton code simple qui present le probleme?

Shao
Shao
Niveau 10
05 septembre 2012 à 09:37:52

Je donnerai ça à midi, je ne peux pas trop avant.

Shao
Shao
Niveau 10
05 septembre 2012 à 13:45:52

Si tout s'est bien passé, le projet test est disponible ici :
https://rapidshare.com/files/996739028/BugSwingJOGL.tar.gz

C'est un projet Java comportant la librairie JOGL. Il n'y a normalement qu'à l'ouvrir avec Eclipse par exemple, et ça devrait être bon.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment