[OK] OpenWindowScreen() freeze pendant qu'un jeu est lancé
[OK] OpenWindowScreen() freeze pendant qu'un jeu est lancé
Bonjour,
J'aime bien me mettre une petite radio lorsque je joue à des jeux.
J'ai un openwindowscreen() diffusant en boucle une animation (le spectrum reagissant au son de la lib Fmod lors de lecture de radio en ligne). Or je viens de m'apercevoir que si même le programme fonctionne bien (la radio est ok et la fenêtre n'est pas bloquée), la screen est freezé lorsque je sors du jeu (X-com pour ne pas le citer).
Auriez vous une idée du pourquoi ? Je me dis que c'est sans doute lié au screen que doit utiliser le jeu mais à part ça..
J'aime bien me mettre une petite radio lorsque je joue à des jeux.
J'ai un openwindowscreen() diffusant en boucle une animation (le spectrum reagissant au son de la lib Fmod lors de lecture de radio en ligne). Or je viens de m'apercevoir que si même le programme fonctionne bien (la radio est ok et la fenêtre n'est pas bloquée), la screen est freezé lorsque je sors du jeu (X-com pour ne pas le citer).
Auriez vous une idée du pourquoi ? Je me dis que c'est sans doute lié au screen que doit utiliser le jeu mais à part ça..
Dernière modification par Ar-S le lun. 02/déc./2013 0:17, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: openscreen() freeze pendant qu'un jeu est lancé
il faudrait plus de précision ^^.
En gros :
- tu lances la radio en openwindowedscreen()
- tu lances ton jeu "bidule.exe" en openscreen (créé en purebasic)
- tu sors du jeu "bidule.exe" et là, ça freeze ?
Sortir = exit (fermer le jeu) , ou juste aller sur le bureau ?
car si par sortir, tu veux dire aller sur le bureau, il faut savoir que tous les sprites de ton jeu sont supprimer, et tu dois tout recharger. il vaut mieux faire un exit il me semble.
En gros :
- tu lances la radio en openwindowedscreen()
- tu lances ton jeu "bidule.exe" en openscreen (créé en purebasic)
- tu sors du jeu "bidule.exe" et là, ça freeze ?
Sortir = exit (fermer le jeu) , ou juste aller sur le bureau ?
car si par sortir, tu veux dire aller sur le bureau, il faut savoir que tous les sprites de ton jeu sont supprimer, et tu dois tout recharger. il vaut mieux faire un exit il me semble.
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Re: openscreen() freeze pendant qu'un jeu est lancé
Nonon,
Je lance ma radio (en PB) avec le spectrum en openWindowScreen() et j'ecoute ma radio
Je lance un jeu commerciale (X-Com) et je joue (en plein ecran)..
Lorsque je quitte le jeu, je m'aperçois que l'openscreen de ma radio est freezé
Je lance ma radio (en PB) avec le spectrum en openWindowScreen() et j'ecoute ma radio
Je lance un jeu commerciale (X-Com) et je joue (en plein ecran)..
Lorsque je quitte le jeu, je m'aperçois que l'openscreen de ma radio est freezé
Dernière modification par Ar-S le dim. 01/déc./2013 21:03, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: openscreen() freeze pendant qu'un jeu est lancé
l'ideal aurai été que ton "Spectrum" fut en openWindowedScreen ............
histoire de beneficier des events ....
si pour une raison ou une autre tu quittes le mode Screen , c'est a toi de rafraichir les Sprites
.... ne sachant pas comme tu as codé ton histoire , je ne m'avanturerai pas plus loin
pour rappel :
histoire de beneficier des events ....

si pour une raison ou une autre tu quittes le mode Screen , c'est a toi de rafraichir les Sprites
.... ne sachant pas comme tu as codé ton histoire , je ne m'avanturerai pas plus loin

pour rappel :
Resultat = IsScreenActive()
Description
Les jeux et les applications en mode plein écran programmés en PureBasic fonctionnent toujours en mode multitâche, pour éviter de bloquer tout le système (que ce soit sur AmigaOS, Windows ou Linux). En d'autre termes, l'utilisateur peut à tout moment revenir sur son bureau pour faire autre chose. Si c'est le cas cette commande renverra 0, indiquant au programmeur de prendre les mesures nécessaires (libérer le clavier et la souris (ReleaseMouse()), arrêter les sons et les musiques, mettre le jeu en pause etc...).
Re: openscreen() freeze pendant qu'un jeu est lancé
Mais le spectrum est en openwindowscreen (pas en openscreen j'ai ecris trop vite).
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: openscreen() freeze pendant qu'un jeu est lancé
J'ai résolu mon soucis.
En surveillant lorsque la fenêtre pert le focus avec un GetActiveWindow() ça marche.
Si la fenêtre n'a plus le focus, je ferme l'openwindowscreen() et la réouvre lorsque la fenêtre reprend le focus.
Je retrouve bien mon spectrum.
En surveillant lorsque la fenêtre pert le focus avec un GetActiveWindow() ça marche.
Si la fenêtre n'a plus le focus, je ferme l'openwindowscreen() et la réouvre lorsque la fenêtre reprend le focus.
Je retrouve bien mon spectrum.

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan
Bonjour,
Je souhaite donner mon avis sur certaines choses au sujet des écrans graphiques avec des fenêtres (OpenWindowedScreen).
C'est une faiblesse que de travailler en PB avec ces écrans graphiques quand on veut faire du multitâche (par exemple jouer un jeu avec une fenêtre créé en PB avec un écran graphique, l'arrêter temporairement, sans fermer la fenêtre, et ouvrir un autre programme qui aura une autre résolution d'écran).
Il faudra, en PB, réouvrir l'écran graphique. Ce qui peut être fastidieux car il faudra à chaque étape de notre programme savoir quand le programme ne sera plus actif et prendre les dispositions nécessaires.
Si en 2D, on peut pallier ces problèmes, en 3D on ne peut que subir les événements.
En effet, en 3D, si on reprend notre jeu créé en 3D, par exemple, pas de problème, tout redémarre normalement mais le problème c'est quand on fermera la fenêtre, avec une erreur à l'instruction END.
Je n'ai pas cessé d'indiquer ça dans le forum et vous pouvez vous même vérifier ces choses.
C'est vraiment dommage car les écrans graphiques sont vraiment bien et parfaitement compatibles avec GUI.
Les problèmes invoquées plus haut ne concernent uniquement quand il y aura changement de résolution d'écran et éventuellement appel du programme Window Defender (sur Vista).
Je souhaite donner mon avis sur certaines choses au sujet des écrans graphiques avec des fenêtres (OpenWindowedScreen).
C'est une faiblesse que de travailler en PB avec ces écrans graphiques quand on veut faire du multitâche (par exemple jouer un jeu avec une fenêtre créé en PB avec un écran graphique, l'arrêter temporairement, sans fermer la fenêtre, et ouvrir un autre programme qui aura une autre résolution d'écran).
Il faudra, en PB, réouvrir l'écran graphique. Ce qui peut être fastidieux car il faudra à chaque étape de notre programme savoir quand le programme ne sera plus actif et prendre les dispositions nécessaires.
Si en 2D, on peut pallier ces problèmes, en 3D on ne peut que subir les événements.
En effet, en 3D, si on reprend notre jeu créé en 3D, par exemple, pas de problème, tout redémarre normalement mais le problème c'est quand on fermera la fenêtre, avec une erreur à l'instruction END.
Je n'ai pas cessé d'indiquer ça dans le forum et vous pouvez vous même vérifier ces choses.
C'est vraiment dommage car les écrans graphiques sont vraiment bien et parfaitement compatibles avec GUI.
Les problèmes invoquées plus haut ne concernent uniquement quand il y aura changement de résolution d'écran et éventuellement appel du programme Window Defender (sur Vista).
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan
Bonjour Pat. Effectivement, j'ai vu que plusieurs fois tu avais signalé ce souci. A mon avis tu as un événement 3D ou Windows, qui se produit au moment ou tu fermes ta fenêtre et qui n'est pas géré ou alors tu cliques sur le bouton Arrêter le programme pour quitter sauvagement l’exécution de ton code.pat a écrit :... avec une erreur à l'instruction END.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan
Merci falsam pour ta réponse.
Je gère parfaitement bien les événements avec les écrans graphiques.
Je te suggère de faire le test suivant, si tu es d'accord, bien évidemment.
Tu me donneras le résultat.
Prend un programme 3D fourni avec PB. Tu le lances dans une fenêtre.
Tu ne quittes pas le programme mais tu bascules dans un autre programme (un jeu par exemple qui a une résolution d'écran différente de celle que tu as actuellement).
Tu rebascules dans ton programme.
1) Pas de problème, ton programme 3D reprend normalement.
2) Maintenant, tu fermes ton programmes 3D.
Tu verras une erreur à l'instruction END.
Il se peut que quelques programmes 3D se ferment bien mais dans la majorité des cas tu trouveras une erreur à l'instruction END.
Fais un essai sur plusieurs exemples de programmes 3D fourni avec PB.
Avec les programmes 2D avec écran graphique, fais le test suivant :
Tu prends un exemple dans les exemples PB mais qui utilisent les écrans graphiques, par exemple un petit exemple qui utilise des sprites.
Tu fais la même chose que pour le programme 3D mais tu verras ceci :
1) Dès que tu rebasculeras dans ton programmes 2D, l'écran graphique sera fermé et la fenêtre toute blanche.
Ce qui veut dire ceci pour la 2D :
Dès qu'il y a changement de résolution d'écran ou qu'on exécute Window Defender (dans Vista), l'écran graphique se ferme systématiquement.
Contrairement à beaucoup de personnes qui pensent qu'il faut recharger les objets, dans la réalité ce n'est pas le cas. En utilisant IsSprite(Id) tu verras, par exemple, que tes sprites sont toujours actifs.
Ce qui veut dire ceci pour la 3D :
L'écran graphique ne se ferme pas mais il y a une erreur dans la libération de quelque chose (mémoire, pile, etc.).
Mieux qu'un très long discours, tu peux vérifier toi-même ces choses.
Tous ces tests doivent se faire avec un changement de résolution d'écran.
Je gère parfaitement bien les événements avec les écrans graphiques.
Je te suggère de faire le test suivant, si tu es d'accord, bien évidemment.
Tu me donneras le résultat.
Prend un programme 3D fourni avec PB. Tu le lances dans une fenêtre.
Tu ne quittes pas le programme mais tu bascules dans un autre programme (un jeu par exemple qui a une résolution d'écran différente de celle que tu as actuellement).
Tu rebascules dans ton programme.
1) Pas de problème, ton programme 3D reprend normalement.
2) Maintenant, tu fermes ton programmes 3D.
Tu verras une erreur à l'instruction END.
Il se peut que quelques programmes 3D se ferment bien mais dans la majorité des cas tu trouveras une erreur à l'instruction END.
Fais un essai sur plusieurs exemples de programmes 3D fourni avec PB.
Avec les programmes 2D avec écran graphique, fais le test suivant :
Tu prends un exemple dans les exemples PB mais qui utilisent les écrans graphiques, par exemple un petit exemple qui utilise des sprites.
Tu fais la même chose que pour le programme 3D mais tu verras ceci :
1) Dès que tu rebasculeras dans ton programmes 2D, l'écran graphique sera fermé et la fenêtre toute blanche.
Ce qui veut dire ceci pour la 2D :
Dès qu'il y a changement de résolution d'écran ou qu'on exécute Window Defender (dans Vista), l'écran graphique se ferme systématiquement.
Contrairement à beaucoup de personnes qui pensent qu'il faut recharger les objets, dans la réalité ce n'est pas le cas. En utilisant IsSprite(Id) tu verras, par exemple, que tes sprites sont toujours actifs.
Ce qui veut dire ceci pour la 3D :
L'écran graphique ne se ferme pas mais il y a une erreur dans la libération de quelque chose (mémoire, pile, etc.).
Mieux qu'un très long discours, tu peux vérifier toi-même ces choses.
Tous ces tests doivent se faire avec un changement de résolution d'écran.
Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan
Bonjour à tous,
Ah ! Si quelqu'un d'honnête pouvais dire que je me suis trompé, que j'ai fait une erreur, qu'il n'y a pas de problème avec les écrans graphiques quand on change la résolution d'écran. Cela me ferait taire, à ce sujet, de manière durable, et je ne pourrais qu'accepter cela.
Mais si cela n'est pas le cas, alors que PureBasic corrige les bugs.
Et je n'ai pas d'autres intentions que celles-ci : que les bugs soient corrigés.
Et tout le monde en profiterait. En premier lieu PureBasic, parce qu'il serait de meilleure qualité.
Et PB de dire : faire un post dans le forum anglais.
A ce jour je n'ai pas réussi à le faire.
Ah ! Si quelqu'un d'honnête pouvais dire que je me suis trompé, que j'ai fait une erreur, qu'il n'y a pas de problème avec les écrans graphiques quand on change la résolution d'écran. Cela me ferait taire, à ce sujet, de manière durable, et je ne pourrais qu'accepter cela.
Mais si cela n'est pas le cas, alors que PureBasic corrige les bugs.
Et je n'ai pas d'autres intentions que celles-ci : que les bugs soient corrigés.
Et tout le monde en profiterait. En premier lieu PureBasic, parce qu'il serait de meilleure qualité.
Et PB de dire : faire un post dans le forum anglais.
A ce jour je n'ai pas réussi à le faire.
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan
Mince j'avais complètement zapper de te répondre. Désolé.
Bonjour Pat. J'ai reproduit tes conditions de test.
-J'ai ouvert un jeu pb.
-J'ai ouvert Age of Empire
-Fermé Age of Empire
-Mon jeu pb c'est planté sur l'instruction End !.
De là à dire que c'est un bug, je ne sais pas car il ne me viendrait pas à l'idée d'ouvrir deux jeux en même temps.
Bonjour Pat. J'ai reproduit tes conditions de test.
-J'ai ouvert un jeu pb.
-J'ai ouvert Age of Empire
-Fermé Age of Empire
-Mon jeu pb c'est planté sur l'instruction End !.
De là à dire que c'est un bug, je ne sais pas car il ne me viendrait pas à l'idée d'ouvrir deux jeux en même temps.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan
Merci falsam pour ta réponse.
Et comme on dit, "Mieux vaut tard que jamais".
En fait ce désagrément que tu as constaté sur la 3D existe donc bien.
Moi qui veut distribuer mes programmes en 3D, ces jeux ne doivent pas avoir de problème.
Et comme c'est dans la possibilité des choses que le multitâche, je ne vois pas pourquoi sur PB cela ne fonctionnerait pas bien.
Tout les langages que j'ai consulté fonctionnent avec le changement de résolution d'écran, sauf PB.
As-tu fais le test sur la 2D ?
Je pense également que je ne me suis pas trompé. Je te propose de faire le test au sujet de la 2D cette fois.
Si tu veux, tu me diras ce qu'il en est de ton côté.
Et pour la 3D, il y a autre chose : les fichiers ne reconnaissent pas les noms avec des accents.
Tu peux aussi faire le test.
Je ne vois pas pourquoi l'instruction IncludePath("----") fonctionne avec les accents et pas les fichiers 3D.
Et comme on dit, "Mieux vaut tard que jamais".
En fait ce désagrément que tu as constaté sur la 3D existe donc bien.
Moi qui veut distribuer mes programmes en 3D, ces jeux ne doivent pas avoir de problème.
Et comme c'est dans la possibilité des choses que le multitâche, je ne vois pas pourquoi sur PB cela ne fonctionnerait pas bien.
Tout les langages que j'ai consulté fonctionnent avec le changement de résolution d'écran, sauf PB.
As-tu fais le test sur la 2D ?
Je pense également que je ne me suis pas trompé. Je te propose de faire le test au sujet de la 2D cette fois.
Si tu veux, tu me diras ce qu'il en est de ton côté.
Et pour la 3D, il y a autre chose : les fichiers ne reconnaissent pas les noms avec des accents.
Tu peux aussi faire le test.
Je ne vois pas pourquoi l'instruction IncludePath("----") fonctionne avec les accents et pas les fichiers 3D.
Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan
...
Dernière modification par Backup le mar. 19/août/2014 9:52, modifié 1 fois.
Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan
A Dobro :
Tu ne dois pas être en plein écran mais sur une fenêtre.
Tu ne fermes pas ta fenêtre et tu bascules dans un programme qui a une autre résolution d'écran. Tu rebascules sur ta fenêtre.
En 3D :
1) Tout est normal.
2) Tu fermes ta fenêtre, tu as une erreur sur l'instruction END.
En 2D :
1) Ton écran graphique est fermé et la fenêtre est blanche.
2) Pas besoin de recharger les sprites, ils sont actifs.
Tu ne dois pas être en plein écran mais sur une fenêtre.
Tu ne fermes pas ta fenêtre et tu bascules dans un programme qui a une autre résolution d'écran. Tu rebascules sur ta fenêtre.
En 3D :
1) Tout est normal.
2) Tu fermes ta fenêtre, tu as une erreur sur l'instruction END.
En 2D :
1) Ton écran graphique est fermé et la fenêtre est blanche.
2) Pas besoin de recharger les sprites, ils sont actifs.
Re: [OK] OpenWindowScreen() freeze pendant qu'un jeu est lan
pat a écrit :A Dobro :
Tu ne dois pas être en plein écran mais sur une fenêtre.
Tu ne fermes pas ta fenêtre et tu bascules dans un programme qui a une autre résolution d'écran. Tu rebascules sur ta fenêtre.
oui ! ton Erreur elle est là !
il FAUT FERMER LA FENETRE !...enfin l'ecran c'est ce que mon code démontre !
que ce soit en WindowedScreen ou en OpenScreen la gestion est la meme !
tu testes si ton application a le focus , si c'est pas le cas tu Ferme cette Put*** de fenetre (l'ecran)! c'est pas une suggestion c'est un ordre !

parce que sinon Directx se retrouve avec 2 ecrans , et la Bug !
c'est pas un probleme de Purebasic , mais un Probleme lié a DirectX (a windows ??? )....
en fermant ton ecran , tu liberes les ressources et Directx peut bosser tranquille
sinon forcement les ressources sont allouées au nouvel ecran ouvert ... et le tiens est dans les Choux
moi dans le code ci dessus, j'utilise un bouton de rappel dans la barre des taches ... pour relancer le beans ! ....
note qu'avec Ar-s (enfin surtout MOA

notre ecran de notre application (une Radio ) ... et de le ré ouvrir lorsqu'on quitte le plein ecran d'un jeux
http://www.purebasic.fr/french/viewtopi ... o&start=45
c'est une autre méthode (automatique) que celle que j'ai posté plus haut )
la technique :
on regarde un ou plusieurs pixel de notre application , pour savoir si elle est recouverte par un ecran ...
si les pixels passent au noir , c'est qu'un Ecran de jeux recouvre notre interface utilisateur ..
donc, on ferme l'ecran graphique de notre application ...
lorsque les couleurs redeviennent les notres ... cela signifie qu'il n'y a plus de plein d'ecran qui recouvre notre appli donc
on reouvre notre ecran
Dernière modification par Backup le mer. 22/janv./2014 13:48, modifié 8 fois.