IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

[Débutant] - Accès à GTK depuis une classe


Sujet :

GTK+ avec C & C++

  1. #1
    Membre éclairé
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    Par défaut [Débutant] - Accès à GTK depuis une classe
    Bonjour à toutes et à tous !

    Je suis débutant en C++ (bien qu'étant déjà passé par le C ) et je suis sur un projet de programme permettant d'enregistrer de la vidéo depuis une webcam. Je suis sous Ubuntu Gnu/Linux et j'utilise pour ce faire, la librairie V4L pour accéder à mon préiphérique. J'ai suivis plusieurs tutos pour arriver où j'en suis actuellement, c'est à dire l'affichage de l'image récupérée de la webcam dans un gtk_drawing_area.

    Seulement, et c'est là que ça se complique, je dois accéder à ce composant depuis une fonction d'une classe appelée depuis la création d'un thread dans mon fichier principal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pthread_create (&CaptureThreadID, NULL, CaptureThreadLoop, NULL);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void * CaptureThreadLoop(void *) {
        Camera.startRecord("",  p_VideoWindow);
    }
    Camera est une instance de cette classe. Et p_VideoWindow est le gtk_drawing_area que j'envoie comme paramètre pour que la fonction de la classe puisse dessiner à l'intérieur.

    Le problème est que visiblement, gtk n'autorise pas cette manipulation... J'ai lancé le programme avec gdb (le débugger) et il me retourne ceci :

    Citation Envoyé par GDB
    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread -1222644848 (LWP 7879)]
    0xb7c0d1e0 in ?? () from /usr/lib/libgdk-x11-2.0.so.0
    J'en ai donc déduis qu'il était interdit d'accéder à des éléments de l'interface graphique (dans leur propre thread) depuis un autre thread.

    Ma question est la suivante : ai-je raison, et comment puis-je corriger celà ?

    Merci d'avance, j'attends avec impatience vos réponses, même si c'est pour corriger une grosse faute de bleu que je suis suceptible d'avoir comis...

    PS : j'ai également tenté d'implémenter une fonction faisant la même chose que la portion de code de la classe servant à afficher l'image, dans mon main.cpp mais je ne sais pas comment accéder à cette fonction depuis la classe. Cependant, faire ce genre de chose serait une aberration car une classe doit pouvoir fonctionner dans tous les programmes sans qu'elle doive appeler une fonction précise dudit programme...
    /// ( : Léo : ) \\\
    ---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
    http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

    -------------------------

    L'orbe du temps (Zelda like 2D en Delphi) : Le Site

  2. #2
    Membre éclairé
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    Par défaut
    Voici le message d'erreur plus précis :

    Xlib: unexpected async reply (sequence 0x1310)!
    /// ( : Léo : ) \\\
    ---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
    http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

    -------------------------

    L'orbe du temps (Zelda like 2D en Delphi) : Le Site

Discussions similaires

  1. Problème accès Textbox depuis une classe enfant
    Par Moutmouth dans le forum C#
    Réponses: 1
    Dernier message: 31/01/2011, 12h34
  2. Accès au fichier ressources depuis une classe action
    Par root76 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/11/2006, 07h36
  3. [EJB2] Accès Interface locale depuis une classe métier.
    Par rigor dans le forum Java EE
    Réponses: 2
    Dernier message: 10/10/2006, 14h44
  4. acces a uneressource bitmap depuis une classe
    Par firejocker dans le forum MFC
    Réponses: 9
    Dernier message: 03/02/2006, 21h48
  5. [Débutant] Lancer procédure depuis une autre classe
    Par pugnator dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2005, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo