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

Linux Discussion :

[Xlib] problème wm


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 53
    Par défaut [Xlib] problème wm
    Salut,

    Je suis entrain d'écrire un petit window manager pour le fun... Pratiquement tout est fonctionnel, mais je rencontre un problème lors de la fermeture des programmes.

    Quand je ferme un programme, la fenêtre la contenant se ferme correctement, mais le processus est toujours actif (même si j'utilise le menu fichier/quitter dudit programme).

    Voici mon pstree après avoir fermé plusieurs urxvt:

    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
    28
    29
    30
    31
    32
    33
    34
    init─┬─acpid
         ├─4*[agetty]
         ├─bluetoothd
         ├─crond
         ├─2*[dbus-daemon]
         ├─dbus-launch
         ├─dhcpcd
         ├─firefox───18*[{firefox}]
         ├─gconfd-2
         ├─hald───hald-runner─┬─hald-addon-acpi
         │                    ├─hald-addon-gene
         │                    ├─hald-addon-inpu
         │                    ├─hald-addon-leds
         │                    ├─hald-addon-rfki
         │                    └─hald-addon-stor
         ├─httpd───11*[httpd]
         ├─login───bash───startx───xinit─┬─X
         │                               └─scrotwm
         ├─login───bash───startx───xinit─┬─X
         │                               └─catwm─┬─setxkbmap
         │                                       ├─5*[urxvt───bash] <-- LA PARTIE INTERESSANTE!
         │                                       └─xsetbg
         ├─mpd───3*[{mpd}]
         ├─mysqld_safe───mysqld───8*[{mysqld}]
         ├─ntpd
         ├─proftpd
         ├─screen─┬─bash───ncmpc
         │        ├─bash───irssi
         │        ├─bash───java───16*[{java}]
         │        ├─bash───vim
         │        └─bash───pstree
         ├─syslog-ng───syslog-ng
         ├─udevd───2*[udevd]
         └─urxvt───bash───screen
    Voici ma fonction de spawn:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    static void spawn(const char **command) {                                                           
        if(fork() == 0) {                                                                               
            if(dis)                                                                                     
                close(ConnectionNumber(dis));                                                           
     
            setsid();                                                                                   
            execvp((char*)command[0],(char**)command);                                                  
            exit(0);                                                                                    
        }                                                                                               
    }
    Voici ma fonction permettant de tuer un client:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void kill_client() {
        if(current != NULL)
            XDestroyWindow(dis,current->win);
    }
    Et le destroy notify handler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    static void destroynotify(XEvent *e) {
        XDestroyWindowEvent *ev = &e->xdestroywindow;
     
        remove_window(ev->window);
        tile();
        update_current();
    }
    Et si besoin est, le reste du code ce trouve la: http://github.com/pyknite/catwm

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 53
    Par défaut
    Plop, problème résolu en lisant un bout de code cet après midi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/08/2011, 14h28
  2. Réponses: 6
    Dernier message: 24/04/2010, 18h49
  3. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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