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 :

La fonction gdk_beep() et Emacs


Sujet :

GTK+ avec C & C++

  1. #1
    Membre éclairé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 331
    Par défaut La fonction gdk_beep() et Emacs
    J'ai déjà pesté contre le bogue du bip de la console (voir ici) qui affecte certaines distributions Linux.
    Ayant constaté que la fonction gdk_beep() n'est pas affectée par ce bogue, je l'ai donc utilisée dans GraceGTK.
    J'ai voulu ensuite obtenir une version d'Emacs capable de faire bip sous Debian 6 Squeeze et pour cela, fourré mon nez dans le code source.
    J'en ai déduit que c'était la fonction XTring_bell() dans le fichier xterm.c qui était en cause et je l'ai modifiée en conséquence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    /* Make audible bell.  */
     
    void
    XTring_bell ()
    {
      struct frame *f = SELECTED_FRAME ();
     
      if (FRAME_X_DISPLAY (f))
        {
    #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT)
          if (visible_bell)
    	XTflash (f);
          else
    #endif
    	{
    	  BLOCK_INPUT;
    #ifdef USE_GTK           	     // P.VINCENT
    	  gdk_beep ();   	     // P.VINCENT
    #else			 	     // P.VINCENT
    	  XBell (FRAME_X_DISPLAY (f), 0);
    	  XFlush (FRAME_X_DISPLAY (f));
    #endif                   	     // P.VINCENT
    	  UNBLOCK_INPUT;
    	}
        }
    }
    En recompilant Emacs, on obtient le résultat souhaité, mais encore plus intéressant, ceci laisse penser que c'est la fonction XBell du serveur X11 qui est en cause.
    J'ai donc envoyé cette suggestion à bug-gnu-emacs@gnu.org.
    Je continue la discussion sur ce site dans le forum Linux qui me semble plus approprié.

  2. #2
    Membre éclairé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 331
    Par défaut
    Finalement le développeur d'emacs m'a répondu (bugs#14041) et signalé qu'ils ont déjà remédié au problème dans la version 24.3.xx en utilisant la fonction XkbBell() au lieu de XBell(), si elle est disponible, ce qui est testé dans la nouvelle version de configure.
    Ma solution à quand même l'avantage d'être plus simple à mettre en oeuvre si on utilise emacs-23 avec GTK car la présence de GTK était déjà testée dans emacs-23.

Discussions similaires

  1. emacs fonction personnalisée avec isearch-backward
    Par crespo12 dans le forum Lisp
    Réponses: 2
    Dernier message: 05/04/2011, 21h55
  2. [emacs] Info paramètres des fonctions
    Par Cedscredi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 17/11/2010, 13h39
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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