Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment utiliser GTK et cURL en même temps ?

Sujet résolu
    17 février 2019 à 14:41:51

    Bonjour,

    je souhaite réaliser un programme C dans lequel j'utilise GTK et l'API libcurl pour récupérer les données d'une API web.

    Cependant, j'ai l'impression que GTK "bloque" la bonne utilisation de libcurl car avec GTK, mes requêtes ne fonctionnent plus.

    A partir du moment où j'appelle gtk_init, je ne peux pas faire une requête correcte avec libcurl, alors que si je fais ma requête avant gtk_init, tout fonctionne bien.

    Ma question est donc la suivante : 

    Comment utiliser GTK et faire des requêtes cURL quand je le souhaite à travers des fonctions qui seront enclenchés par des widgets gtk ? 

    J'ai entendu parler de threads, est-ce que quelqu'un peut m'expliquer ce que c'est ? 

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2019 à 8:49:43

      créer un thread c'est créer un second processus, ce qui permet le travail parallèle par exemple regarde sur developpez, ils on un tuto pas mauvais :)

      -
      Edité par ox223252 18 février 2019 à 8:50:04

      • Partager sur Facebook
      • Partager sur Twitter

      la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

      Mon GitHub

        18 février 2019 à 22:21:34

        Merci beaucoup pour ta réponse.

        J'ai effectivement regardé les exemples de threads avec GTK mais la plupart sont malheureusement obsolètes.

        Il est maintenant indiqué "Tous les appels GTK et GDK doivent être faits dans le thread principal", cependant je ne comprends pas vraiment ce que cela signifie, ou plutôt comment faire ?

        J'ai essayé d'appeler ma fonction qui fait la requête curl dans un gdk_thread_add_idle mais cela n'a rien changé.

        Est-ce que quelqu’un sait comment se servir de cette fonction ?

        Merci.

        -
        Edité par JeremTer 18 février 2019 à 22:22:40

        • Partager sur Facebook
        • Partager sur Twitter
          19 février 2019 à 7:31:14

          pour le thread principal, en fait c'est le programme lui même, le main fait parti du thread principal.
          • Partager sur Facebook
          • Partager sur Twitter

          la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

          Mon GitHub

            19 février 2019 à 15:39:28

            D'accord donc il faut que je fasse ma fonction curl dans un autre thread logiquement ?

            C'est ce que j'ai essayé de faire en appelant ma fonction getData (pour récupérer les données grâce à curl) dans un gdk_threads_add_idle dans une fonction comme ceci, mais cela n'a rien changé : 

            gdk_threads_add_idle_full(G_PRIORITY_HIGH, getData, search->url, NULL);

            Une idée ? 

            Merci.

            • Partager sur Facebook
            • Partager sur Twitter
              19 février 2019 à 15:52:30

              je connais pas les GTK threads, mais as tu déjà testé avec thread standards ?
              • Partager sur Facebook
              • Partager sur Twitter

              la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

              Mon GitHub

                19 février 2019 à 16:29:43

                J'ai trouvé mon erreur, il s'agissait sans doute d'une confusion entre les séparateurs de nombres décimaux anglais et français ('.' et ',').

                Utiliser gtk_disable_setlocale avant gtk_init a résolu mon problème.

                Merci.

                -
                Edité par JeremTer 22 février 2019 à 11:02:09

                • Partager sur Facebook
                • Partager sur Twitter

                Comment utiliser GTK et cURL en même temps ?

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown