Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Zone de texte  (Lu 17241 fois)

0 Membres et 1 Invité sur ce sujet

Orwel

  • Full Member
  • ***
  • Messages: 208
    • Voir le profil
Re: Zone de texte
« Réponse #15 le: Avril 05, 2012, 09:41:37 pm »
Citer
fenetre::Draw(const sf::RenderWindow &app)

Il n'y as que moi que cela choque  :o

On ne peut pas dessiner une target dans une target.

Je n'ai pas bien compris, pourquoi ceci ne respecte pas l'intégrité des données???
Citer
Ma_renderWindow.Draw(Ma_Fenetre.getTexture());

Puis cette ligne aussi est fausse  ??? Il faut utiliser un sprite pour dessiner une texture(pas sur de moi).
Car sinon le fait d'afficher un sprite, un text ou un shape ne respecte pas l'intégrité des données  ???

Question certainement superficiel, mais juste par curiosité  ::)


edit:: une majuscule dans Draw, il s'agit donc de classe hors SFML. Désoler de la confusion  :-[

Neckara

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
Re: Zone de texte
« Réponse #16 le: Avril 05, 2012, 09:52:14 pm »
ça me gène un peu de faire cela.

J'ai une feuille et je demande à chaque personne de coller un petit auto-collant dessus.
Tu propose de faire passer la feuille à chaque personne pour qu'elles puissent coller leur propre auto-collant.

Mais ne vaut-il pas mieux récupérer cet auto-collant pour être sûr qu'un et un seul auto-collant sera collé par personnes et pour éventuellement pouvoir mettre en place des contrôles sur la position et taille?

Donner la sf::RenderWindow, même en const reste tout de même une confiance non négligeable accordée à Fenetre.

EDIT : en effet, il faudra retourner un sf::Sprite.

Neckara

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
Re: Zone de texte
« Réponse #17 le: Avril 06, 2012, 01:00:16 pm »
J'ai entendu dire que la SFML 2.0 changeait pas mal de choses de la 1.6 et qu'il serait possible que j'ai à "tout recoder"

Est-ce que la SFML 2.0 gère bien la rétro-compatibilité avec la 1.6 ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re: Zone de texte
« Réponse #18 le: Avril 06, 2012, 01:05:48 pm »
Citer
Est-ce que la SFML 2.0 gère bien la rétro-compatibilité avec la 1.6 ?
Non justement, c'est pour ça que c'est une 2.0 et non une 1.7 :)

Mais ce sont surtout des modifications cosmétiques et des ajouts, dans le fond les concepts qui marchaient avec 1.6 marchent toujours avec 2.0.
Laurent Gomila - SFML developer

Neckara

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
Re: Zone de texte
« Réponse #19 le: Avril 06, 2012, 01:09:51 pm »
Est-ce qu'il y a une date de publication du tutoriel pour la 2.0 ?
Par modification cosmétique, auriez-vous un exemple?

Sinon, j'essaye de compiler la SFML 2.0 avec cmake et mingw-32make sous windows 7
Et j'ai ce message :
Citer

C:\Users\Neckara\Desktop\Bibliothèques\SFML\SFML_build>mingw32-make all
CMake Error: Target DependInfo.cmake file not found
Scanning dependencies of target sfml-system
CMake Error: Directory Information file not found
Building CXX object src/SFML/System/CMakeFiles/sfml-system.dir/Clock.cpp.obj
Le chemin d'accès spécifié est introuvable.
mingw32-make[2]: *** [src/SFML/System/CMakeFiles/sfml-system.dir/Clock.cpp.obj]
Error 1
mingw32-make[1]: *** [src/SFML/System/CMakeFiles/sfml-system.dir/all] Error 2
mingw32-make: *** [all] Error 2

C:\Users\Neckara\Desktop\Bibliothèques\SFML\SFML_build>mingw32-make sfml-system
CMake Error: Target DependInfo.cmake file not found
Scanning dependencies of target sfml-system
CMake Error: Directory Information file not found
[  7%] Building CXX object src/SFML/System/CMakeFiles/sfml-system.dir/Clock.cpp.
obj
Le chemin d'accès spécifié est introuvable.
mingw32-make[3]: *** [src/SFML/System/CMakeFiles/sfml-system.dir/Clock.cpp.obj]
Error 1
mingw32-make[2]: *** [src/SFML/System/CMakeFiles/sfml-system.dir/all] Error 2
mingw32-make[1]: *** [src/SFML/System/CMakeFiles/sfml-system.dir/rule] Error 2
mingw32-make: *** [sfml-system] Error 2

C:\Users\Neckara\Desktop\Bibliothèques\SFML\SFML_build>

Est-ce que je me serais trompé sur les options?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re: Zone de texte
« Réponse #20 le: Avril 06, 2012, 01:20:38 pm »
Citer
Est-ce qu'il y a une date de publication du tutoriel pour la 2.0 ?
Oui : dès que j'aurai le temps de le faire.

Citer
Par modification cosmétique, auriez-vous un exemple?
J'ai renommé des classes, des fonctions, j'ai changé des conventions de nommage, etc. Beaucoup de modifs sur la forme, mais en fait très peu sur le fond.

Citer
Sinon, j'essaye de compiler la SFML 2.0 avec cmake et mingw-32make sous windows 7
Et j'ai ce message
T'as dû sauter une étape, ou mal faire un truc. Dis moi tout ce que tu as fait en détail.
Laurent Gomila - SFML developer

danman

  • Hero Member
  • *****
  • Messages: 1121
    • Voir le profil
    • E-mail
Re : Zone de texte
« Réponse #21 le: Avril 06, 2012, 06:53:49 pm »
Hormis la partie réseau, les sockets ont changés de sémantique.
Pointilleur professionnel

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Zone de texte
« Réponse #22 le: Avril 06, 2012, 06:55:21 pm »
C'est sûr qu'il y a tout de même des modifications sur le fond, mais ce que je voulais dire c'est que globalement on n'est pas dépaysé, ce n'est pas comme aborder une toute nouvelle API.
Laurent Gomila - SFML developer

Neckara

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
Re : Zone de texte
« Réponse #23 le: Avril 08, 2012, 01:46:08 pm »
J'ai tout simplement suivi le tutoriel, j'ai presque tout coché dans les options de cmake.
D'après mon prof de C++, ceci pourrait venir du fait qu'on utilise cmake et mingw32-make qui sont logiciels de linux porté sous windows.

Il m'a aidé à installer la SFML 2.0 sur mon débian et les exemples semblent fonctionner sauf pour le son.
Il y a aussi quelques messages d'erreur (?)

Citer
window marche bien, lorsqu'on appuie sur Echap ou la croix on a un message d'erreur :

neckara@NeckDebian:~/local/sfml_build/examples/window$ ./window
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.


sound_capture : n'entend pas le son enregistrer : sûrement une erreur de  du config du micro

socket : aucun problème tcp et udp

pong : marche correctement mais messages :
./pong
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
DRM_IOCTL_GEM_CLOSE 4 failed (region): Bad file descriptor


X11 : deux carré jaunes au milieu de deux carrés verts/gris sur un fond noir.
Le carré de gauche semble s'incliner plus rapidement que le carré de droite mais cela reste assez long et très pixelisé.

./X11
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
//lorsqu'on quitte :
X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)
  Major opcode of failed request:  137 (DRI2)
  Minor opcode of failed request:  7 ()
  Resource id in failed request:  0x5a00002
  Serial number of failed request:  224388
  Current serial number in output stream:  224388


voip semble marcher mais toujours pas de sons.

sound : j'entends rien

shader : textes très mal affichés (fait exprès ?)

../shader
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
DRM_IOCTL_GEM_CLOSE 11 failed (region): Bad file descriptor
DRM_IOCTL_GEM_CLOSE 10 failed (region): Bad file descriptor
DRM_IOCTL_GEM_CLOSE 37 failed (region): Bad file descriptor
DRM_IOCTL_GEM_CLOSE 32 failed (region): Bad file descriptor
DRM_IOCTL_GEM_CLOSE 7 failed (region): Bad file descriptor
DRM_IOCTL_GEM_CLOSE 8 failed (region): Bad file descriptor
DRM_IOCTL_GEM_CLOSE 9 failed (region): Bad file descriptor


opengl : marche très bien mais juste quelques messages d'erreurs :
./opengl
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
DRM_IOCTL_GEM_CLOSE 6 failed (region): Bad file descriptor
DRM_IOCTL_GEM_CLOSE 59 failed (region): Bad file descriptor


EDIT : j'ai regardé le code source de certains exemples, dans aucun je n'ai vu l'utilisation de thread pour avoir deux processus : un pour l'affichage et un pour les évènements.
Je vais donc écrire un petit code pour tester parce qu'avec la 1.6 cela posait des problèmes.

EDIT 2 :
Je n'arrive même pas à compiler :
Citer
neckara@NeckDebian:~/Documents/Donnees/Test-Boucle_Lecture_ecriture$ g++ main.cpp -o exe -lsfml-graphics
/tmp/ccCwaS3T.o: In function `lance_afficher(void*)':
main.cpp:(.text+0x1b): undefined reference to `sf::Window::setFramerateLimit(unsigned int)'
main.cpp:(.text+0x5d): undefined reference to `sf::RenderTarget::clear(sf::Color const&)'
main.cpp:(.text+0x68): undefined reference to `sf::Window::display()'
main.cpp:(.text+0x97): undefined reference to `sf::Window::isOpen() const'
/tmp/ccCwaS3T.o: In function `main':
main.cpp:(.text+0x185): undefined reference to `sf::RenderWindow::RenderWindow(sf::VideoMode, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, sf::ContextSettings const&)'
main.cpp:(.text+0x209): undefined reference to `sf::Window::setActive(bool) const'
main.cpp:(.text+0x237): undefined reference to `sf::Thread::launch()'
main.cpp:(.text+0x28c): undefined reference to `sf::Window::close()'
main.cpp:(.text+0x2a5): undefined reference to `sf::Window::pollEvent(sf::Event&)'
main.cpp:(.text+0x2b5): undefined reference to `sf::Window::isOpen() const'
collect2: ld returned 1 exit status
Je pense qu'il doit me manquer une option pour la compilation, mais laquelle?
J'ai tenté de regarder dans les Makefile des exemples, mais je n'ai rien trouvé.
« Modifié: Avril 08, 2012, 04:54:59 pm par Neckara »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Zone de texte
« Réponse #24 le: Avril 08, 2012, 06:14:39 pm »
Citer
j'ai presque tout coché dans les options de cmake.
C'est-à-dire ?

Citer
D'après mon prof de C++, ceci pourrait venir du fait qu'on utilise cmake et mingw32-make qui sont logiciels de linux porté sous windows.
Aaaah... les profs de C++ ::)

Pour tes problèmes Linux, tu es sûr que tes drivers graphiques sont à jour ? Tu as essayé glxgears ?

Et sinon (pour les erreurs d'édition de liens) tu es sûr que tu n'as pas une 1.6 qui traîne et qui pourrait être utilisée à la place de la 2.0 (elles s'installent dans des endroits différents).
Laurent Gomila - SFML developer

Neckara

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
Re : Zone de texte
« Réponse #25 le: Avril 08, 2012, 06:31:51 pm »
J'avais en effet une 1.6 qui traînait, je l'ai désinstallée et la compilation marche.

Pour ma carte graphique, c'est une intel, mon prof avait rapidement regardé les drivers et ça semblais être bon.
Je vais essayer de voir ce qu'est glxgears parce que je ne sais pas du tout ce que c'est^^

Pour window, il faudrait que je reboot pour voir les options que j'avais coché.

J'ai testé plusieurs fois mon code, mais dès que j'appuie sur une touche ou parfois quand je met la souris sur la fenêtre, celle-ci se ferme subitement avec ces messages d'erreurs :
Citer
neckara@NeckDebian:~/Documents/Donnees/Test-Boucle_Lecture_ecriture$ g++ main.cpp -o exe -lsfml-window -lsfml-graphics -lsfml-audio -lsfml-system -lsfml-network
neckara@NeckDebian:~/Documents/Donnees/Test-Boucle_Lecture_ecriture$ ./exedo_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
X Error of failed request:  BadIDChoice (invalid resource ID chosen for this connection)
  Major opcode of failed request:  148 (XFIXES)
  Minor opcode of failed request:  5 (XFixesCreateRegion)
  Resource id in failed request:  0x6000018
  Serial number of failed request:  111
  Current serial number in output stream:  111
neckara@NeckDebian:~/Documents/Donnees/Test-Boucle_Lecture_ecriture$ ./exe
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
X Error of failed request:  BadIDChoice (invalid resource ID chosen for this connection)
  Major opcode of failed request:  148 (XFIXES)
  Minor opcode of failed request:  5 (XFixesCreateRegion)
  Resource id in failed request:  0x6000089
  Serial number of failed request:  451
  Current serial number in output stream:  451
neckara@NeckDebian:~/Documents/Donnees/Test-Boucle_Lecture_ecriture$ ./exe
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
      after 493 requests (492 known processed) with 0 events remaining.
neckara@NeckDebian:~/Documents/Donnees/Test-Boucle_Lecture_ecriture$ ./exe
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
X Error of failed request:  BadLength (poly request too large or internal Xlib length error)
  Major opcode of failed request:  148 (XFIXES)
  Minor opcode of failed request:  10 (XFixesDestroyRegion)
  Serial number of failed request:  473
  Current serial number in output stream:  472
neckara@NeckDebian:~/Documents/Donnees/Test-Boucle_Lecture_ecriture$ ./exe
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
      after 505 requests (504 known processed) with 0 events remaining.

#include <iostream>
#include <SFML/Graphics.hpp>

const int IMGPROSEC = 60;

void lance_afficher(void *data)
{
   sf::RenderWindow * window = static_cast<sf::RenderWindow*>(data);
   window->setFramerateLimit(IMGPROSEC);
   while (window->isOpen())
    {
        window->clear();
        // dessine tout...
        window->display();
    }
}

int main()
{
   sf::RenderWindow window(sf::VideoMode(500, 500, 32), "titre");
   window.setActive(false);
   sf::Thread thread(&lance_afficher, &window);
       thread.launch();
   sf::Event Event;
   while (window.isOpen())
       {
           while (window.waitEvent(Event))
      {
         if(Event.type == sf::Event::Closed)
         {
std::cout << "Fermeture" << std::endl;
            window.close();
            break;
         }
      }
       }
}

Si jamais ceci peut vous aider :

Citer
neckara@NeckDebian:~/Documents/Donnees/Test-Boucle_Lecture_ecriture$ valgrind ./exe
==4317== Memcheck, a memory error detector
==4317== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==4317== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info
==4317== Command: ./exe
==4317==
==4317== Syscall param ioctl(generic) points to uninitialised byte(s)
==4317==    at 0x6DE3789: ioctl (syscall-template.S:82)
==4317==    by 0x886F11C: ??? (in /usr/lib/dri/i965_dri.so)
==4317==    by 0x886F20C: driDrawableInitVBlank (in /usr/lib/dri/i965_dri.so)
==4317==    by 0x887C522: intelMakeCurrent (in /usr/lib/dri/i965_dri.so)
==4317==    by 0x886FEC1: ??? (in /usr/lib/dri/i965_dri.so)
==4317==    by 0x6EBC18B: ??? (in /usr/lib/libGL.so.1.2)
==4317==    by 0x6E97DA1: glXMakeContextCurrent (in /usr/lib/libGL.so.1.2)
==4317==    by 0x6E97E72: glXMakeCurrent (in /usr/lib/libGL.so.1.2)
==4317==    by 0x4907DC3: sf::priv::GlxContext::makeCurrent() (in /usr/local/lib/libsfml-window.so.2.0)
==4317==    by 0x490244C: sf::priv::GlContext::setActive(bool) (in /usr/local/lib/libsfml-window.so.2.0)
==4317==    by 0x4905188: sf::Window::setActive(bool) const (in /usr/local/lib/libsfml-window.so.2.0)
==4317==    by 0x804911C: main (in /media/Acer/Users/Neckara/Desktop/Donnees/Test-Boucle_Lecture_ecriture/exe)
==4317==  Address 0xfedafee8 is on thread 1's stack
==4317==
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
X Error of failed request:  BadLength (poly request too large or internal Xlib length error)
  Major opcode of failed request:  1 (X_CreateWindow)
  Serial number of failed request:  59
  Current serial number in output stream:  60
==4317==
==4317== HEAP SUMMARY:
==4317==     in use at exit: 25,522,439 bytes in 4,757 blocks
==4317==   total heap usage: 9,565 allocs, 4,808 frees, 26,312,816 bytes allocated
==4317==
==4317== LEAK SUMMARY:
==4317==    definitely lost: 0 bytes in 0 blocks
==4317==    indirectly lost: 0 bytes in 0 blocks
==4317==      possibly lost: 1,220 bytes in 27 blocks
==4317==    still reachable: 25,521,219 bytes in 4,730 blocks
==4317==         suppressed: 0 bytes in 0 blocks
==4317== Rerun with --leak-check=full to see details of leaked memory
==4317==
==4317== For counts of detected and suppressed errors, rerun with: -v
==4317== Use --track-origins=yes to see where uninitialised values come from
==4317== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 112 from 14)

Le prof avait aussi testé glxgears (je me souviens des engrenages^^)
Quand j'ai fermé, le message XIO c'est affiché
Citer
neckara@NeckDebian:~/Documents/Donnees/Test-Boucle_Lecture_ecriture$ glxgears
2595 frames in 5.0 seconds = 518.781 FPS
2235 frames in 5.0 seconds = 446.572 FPS
2590 frames in 5.0 seconds = 517.616 FPS
2390 frames in 5.0 seconds = 477.659 FPS
2498 frames in 5.0 seconds = 499.217 FPS
2458 frames in 5.0 seconds = 491.246 FPS
XIO:  fatal IO error 104 (Connection reset by peer) on X server ":0.0"
      after 45005 requests (45002 known processed) with 0 events remaining.

EDIT : glxgears n'affiche l'erreur XIO que lorsque je ferme en cliquant sur la croix, si j'appuie sur echap, je n'ai pas d'erreur.
« Modifié: Avril 08, 2012, 06:40:31 pm par Neckara »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Zone de texte
« Réponse #26 le: Avril 08, 2012, 06:47:02 pm »
Mais sans thread déjà, ça marche ? Faudrait pas s'éparpiller ;)
Laurent Gomila - SFML developer

Neckara

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
Re : Zone de texte
« Réponse #27 le: Avril 08, 2012, 07:01:42 pm »
Sans thread, il marche, le problème vient, je pense, de l'utilisation de display() et de waitEvent() en même temps.
Vu que dans la 1.6 si je mettais des verrous pour que ces deux fonctions ne puissent s'exécuter en même temps, le code marchait.
Mais c'était vraiment du gaspillage vu que waitEvent va attendre un évènement donc il va bloquer l'affichage si aucun évènement ne survient.
Tandis que display() va quant à lui bloquer le processus de lecture d'évent puisque j'ai mis un setLimiteFrame(60)

Citer
./exe
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
Fermeture

#include <iostream>
#include <SFML/Graphics.hpp>

const int IMGPROSEC = 60;

void lance_afficher(void *data)
{
   sf::RenderWindow * window = static_cast<sf::RenderWindow*>(data);
   window->setFramerateLimit(IMGPROSEC);
   while (window->isOpen())
    {
        window->clear();
        // dessine tout...
        window->display();
    }
}

int main()
{
   sf::RenderWindow window(sf::VideoMode(500, 500, 32), "titre");
   window.setActive(false);
   sf::Thread thread(&lance_afficher, &window);
   //    thread.launch();
   sf::Event Event;
   while (window.isOpen())
       {
           while (window.waitEvent(Event))
      {
         if(Event.type == sf::Event::Closed)
         {
std::cout << "Fermeture" << std::endl;
            window.close();
            break;
         }
      }
       }
window.display();
}

NB : je suis en train d'installer ddd pour voir exactement ce qu'il se passe.
EDIT : lancé avec ddd, il n'y a aucune erreur. Mais on ne voit pas le deuxième thread, je pense que le deuxième thread n'est pas exécuté.

EDIT2 : je pourrais faire un pollevent, utiliser sf::Clock et sf::Mutex pour limiter le rechargement des images, mais avec :

#include <iostream>
#include <SFML/Graphics.hpp>

const int IMGPROSEC = 60;
sf::Mutex * Mutex;

void lance_afficher(void *data)
{
   sf::RenderWindow * window = static_cast<sf::RenderWindow*>(data);
   window->setFramerateLimit(IMGPROSEC);
   while (window->isOpen())
    {
//std::cout << "!!" << std::endl;
Mutex->lock();
        window->clear();
        // dessine tout...
        window->display();
Mutex->unlock();
    }
}

int main()
{
Mutex = new sf::Mutex();
sf::RenderWindow window(sf::VideoMode(500, 500, 32), "titre");
window.setActive(false);
sf::Thread thread(&lance_afficher, &window);
thread.launch();
sf::Event Event;
while (window.isOpen())
{

Mutex->lock();
        while (window.pollEvent(Event))
{
std::cout << "???" << std::endl;
Mutex->unlock();
if(Event.type == sf::Event::Closed)
{
std::cout << "Fermeture" << std::endl;
    window.close();
    break;
}
Mutex->lock();
      }
Mutex->unlock();
}
}

Il n'affichera à chaque fois au plus 3 fois "???"
Et sur quelques tests j'ai même eu :
Citer
./exe
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
Fermeture
X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)
  Major opcode of failed request:  137 ()
  Minor opcode of failed request:  6
  Resource id in failed request:  0x5800001
  Serial number of failed request:  749
  Current serial number in output stream:  750
neckara@NeckDebian:~/Documents/Donnees/Test-Boucle_Lecture_ecriture$ ./exe
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
Fermeture
pure virtual method called
terminate called without an active exception
Abandon

Par contre si je décommente l'affichage des "!!!" j'ai :
Citer
./exe
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vblank_mode configuration parameter.
Et tout fonctionne plutôt bien.

#include <iostream>
#include <SFML/Graphics.hpp>

const int IMGPROSEC = 60;
sf::Mutex * Mutex;

void lance_afficher(void *data)
{
   sf::RenderWindow * window = static_cast<sf::RenderWindow*>(data);
   window->setFramerateLimit(IMGPROSEC);
   while (window->isOpen())
    {
//std::cout << "!!" << std::endl;
Mutex->lock();
        window->clear();
        // dessine tout...
        window->display();
Mutex->unlock();
    }
}

int main()
{
Mutex = new sf::Mutex();
sf::RenderWindow window(sf::VideoMode(500, 500, 32), "titre");
window.setActive(false);
sf::Thread thread(&lance_afficher, &window);
thread.launch();
sf::Event Event;
while (window.isOpen())
{

Mutex->lock();
        while (window.pollEvent(Event))
{
std::cout << "???" << std::endl;
Mutex->unlock();
if(Event.type == sf::Event::Closed)
{
std::cout << "Fermeture" << std::endl;
    window.close();
    break;
}
Mutex->lock();
      }
Mutex->unlock();
}
}
« Modifié: Avril 08, 2012, 07:41:18 pm par Neckara »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Zone de texte
« Réponse #28 le: Avril 08, 2012, 07:48:26 pm »
Concrètement, le tout dernier code donne quoi comme résultat, avec et sans le mutex ?
Laurent Gomila - SFML developer

Neckara

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
Re : Zone de texte
« Réponse #29 le: Avril 08, 2012, 08:07:51 pm »
Concrètement :

- Sans Mutex : erreur qui ferme la fenêtre dès que j'appuie sur le clavier ou parfois dès qu'un évènement souris survient.
- Avec Mutex : interblocage (?), mais marche parfaitement lorsque je met le "std::cout << "!!" << std::endl; juste avant le Mutex->lock() dans la boucle d'affichage