Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: lo7601 le Janvier 02, 2019, 03:29:36 am

Titre: Crash à la création d'une fenêtre dans une autre fenêtre.
Posté par: lo7601 le Janvier 02, 2019, 03:29:36 am
Salut lorsque j'essaie de créer une "Renderwindow" dans une autre "Renderwindow" SFML Debug me renvoie ce message d'erreur : static sf::priv::GlContext* sf::priv::GlContext::create(const sf::ContextSettings&, const sf::priv::WindowImpl*, unsigned int) : Assertion sharedContext != __null' failed.

Je suis sous ubuntu 14.04 et j'utilise SFML 2.4.1.
Titre: Re: Crash à la création d'une fenêtre dans une autre fenêtre.
Posté par: Laurent le Janvier 02, 2019, 08:22:22 am
Salut

1. Clarifie ta description du problème. Créer "une RenderWindow dans une RenderWindow", en terme de code, ça ne veut pas dire grand chose ; sois précis et exact dans tes formulations. Si possible, donne un code complet et minimal qui reproduit le problème.

2. Utilise un debugger pour avoir plus de détails : pile d'appels, ligne de code exacte du crash, etc.

3. Essaye toujours la toute dernière version de SFML avant de bloquer sur un problème :)
Titre: Re: Crash à la création d'une fenêtre dans une autre fenêtre.
Posté par: lo7601 le Janvier 02, 2019, 04:03:33 pm
Salut!
J'ai essayé de faire un code, le plus minimal possible mais pas facile quand on est sur un gros projet.

#include "application.h"
using namespace odfaeg::core;
using namespace odfaeg::graphic;
using namespace odfaeg::physic;
using namespace odfaeg::math;
using namespace odfaeg::network;
namespace sorrok {
 MyAppli::MyAppli(sf::VideoMode wm, std::string title) : Application (wm, title, sf::Style::Default, sf::ContextSettings(0, 0, 4, 3, 0)) {
}
void MyAppli::onLoad() {
        TextureManager<> tm;
        tm.fromFileWithAlias("tilesets/herbe.png", "GRASS");
        tm.fromFileWithAlias("tilesets/murs.png", "WALLS");
        tm.fromFileWithAlias("tilesets/maison.png", "HOUSE");
        tm.fromFileWithAlias("tilesets/flemmes1.png", "FIRE1");
        tm.fromFileWithAlias("tilesets/flemmes2.png", "FIRE2");
        tm.fromFileWithAlias("tilesets/flemmes3.png", "FIRE3");
        FontManager<Fonts> fm;
        fm.fromFileWithAlias("fonts/FreeSerif.ttf", Serif);
        cache.addResourceManager(fm, "FontManager");
        cache.addResourceManager(tm, "TextureManager");
        //shader.loadFromFile("Shaders/SimpleVertexShader.vertexshader", "Shaders/SimpleFragmentShader.fragmentshader");
    }
void MyAppli::onInit () {      
        TextureManager<> &tm = cache.resourceManager<Texture, std::string>("TextureManager");
        Vec2f pos (getView().getPosition().x - getView().getSize().x * 0.5f, getView().getPosition().y - getView().getSize().y * 0.5f);
        BoundingBox bx (pos.x, pos.y, 0, getView().getSize().x, getView().getSize().y, 0);
        theMap = new Map(&getRenderComponentManager(), "Map test", 100, 50);
        BaseChangementMatrix bcm;
        bcm.set2DIsoMatrix();
        theMap->setBaseChangementMatrix(bcm);
        World::addEntityManager(theMap);
        World::setCurrentEntityManager("Map test");
        eu = new EntitiesUpdater();
        World::addWorker(eu);      
        tiles.push_back(new Tile(tm.getResourceByAlias("GRASS"), Vec3f(0, 0, 0), Vec3f(120, 60, 0),sf::IntRect(0, 0, 100, 50)));
        BoundingBox mapZone(0, 0, 0, 1500, 1000, 0);
        World::generate_map(tiles, walls,Vec2f(100, 50),mapZone,false);
        ZSortingRenderComponent *frc1 = new ZSortingRenderComponent(getRenderWindow(),0, "E_BIGTILE");
        View view = getView();
        frc1->setView(view);
        getRenderComponentManager().addComponent(frc1);
        World::update();
         wResuHero = new RenderWindow (sf::VideoMode(400, 300), "Create ODFAEG Application", sf::Style::Titlebar, sf::ContextSettings(24, 0, 4, 3, 0));
        View wView = wResuHero->getDefaultView();
        wView.setCenter(Vec3f(wResuHero->getSize().x * 0.5f, wResuHero->getSize().y * 0.5f, 0));
        wResuHero->setView(wView);
 
Titre: Re: Crash à la création d'une fenêtre dans une autre fenêtre.
Posté par: Laurent le Janvier 02, 2019, 04:19:06 pm
Là je ne vois qu'une création de RenderWindow. Mais surtout, je vois plein de code non-SFML ; qu'est-ce qu'on est censés faire de tout ça ? On n'a aucune idée de ce qu'il se passe dans ce code...

Si tu utilises une surcouche (un moteur de jeu ou autre) alors :
- si ton problème est lié à la surcouche, vois de ce côté-là -- soit c'est toi qui l'a créée et on ne pourra pas grand chose pour t'aider à debugger, soit c'est quelqu'un d'autre et dans ce cas contacte-le directement
- si ton problème n'est pas lié à la surcouche, alors crée, en partant de zéro, un code qui reproduit le problème et qui n'utilise que SFML ; cela te permettra de beaucoup mieux isoler la cause du problème et d'avoir une aide beaucoup plus efficace
Titre: Re: Crash à la création d'une fenêtre dans une autre fenêtre.
Posté par: G. le Janvier 02, 2019, 04:37:32 pm
Le retour de Lolilolight ! Ça n'a pas beaucoup changé.  ;D
Titre: Re: Crash à la création d'une fenêtre dans une autre fenêtre.
Posté par: lo7601 le Janvier 02, 2019, 06:53:42 pm
Oups j'ai pas voulu poster ce code.

Mais j'ai mis du code en commentaire et après je l'ai décommenté et ça remarche.

C'est bizarre et j'ai des pointeurs qui changent de valeur toutes seule à l'exécution ....

G. = Guillaume Merlini ?
Titre: Re: Crash à la création d'une fenêtre dans une autre fenêtre.
Posté par: G. le Janvier 02, 2019, 08:24:09 pm
No.
Titre: Re: Crash à la création d'une fenêtre dans une autre fenêtre.
Posté par: lo7601 le Janvier 02, 2019, 10:52:55 pm
Ha je pensais parce que tu m'avais dis un jour que mon projet n'avais pas beaucoup avancé depuis que je l'avais présenté sur le site du zéro et au départ j'avais commencé le projet avec Guillaume Merlini mais comme celui-ci m'a quitté je continue le projet tout seul. (donc du coup oui je n'avance pas très vite et je suis actuellement bloqué sur quelques petit bugs)
Bref je vais devoir faire des tests pour voir pourquoi certains de mes pointeurs changent de valeur tout seul.