Ignore:
Timestamp:
11/15/08 00:50:48 (5 years ago)
Author:
pterjan
Message:
  • Move attaching logic to a separate function
File:
1 edited

Legend:

Unmodified
Added
Removed
  • neercs/trunk/src/attach.c

    r2995 r3324  
    163163} 
    164164 
     165void attach(struct screen_list* screen_list) 
     166{ 
     167    char **sockets; 
     168    int i; 
     169 
     170    sockets = list_sockets(screen_list->socket_dir, screen_list->session_name); 
     171    if(sockets && sockets[0]) 
     172    { 
     173        char *session; 
     174        for(i=0; sockets[i]; i++); 
     175        i--; 
     176        screen_list->socket_path[SOCK_SERVER] = strdup(sockets[i]); 
     177        session = connect_socket(screen_list, SOCK_SERVER); 
     178        while(!session && i > 0) 
     179        { 
     180            free(screen_list->socket_path[SOCK_SERVER]); 
     181            i--; 
     182            screen_list->socket_path[SOCK_SERVER] = strdup(sockets[i]); 
     183            session = connect_socket(screen_list, SOCK_SERVER); 
     184        } 
     185        debug("Connected to session %s", session); 
     186        if(session) 
     187        { 
     188            /* Create main canvas and associated caca window */ 
     189            screen_list->cv = caca_create_canvas(0, 0); 
     190            screen_list->dp = caca_create_display(screen_list->cv); 
     191            if(!screen_list->dp) 
     192                return; 
     193            caca_set_cursor(screen_list->dp, 1); 
     194 
     195            screen_list->socket_path[SOCK_CLIENT] = 
     196                build_socket_path(screen_list->socket_dir, session, SOCK_CLIENT); 
     197            create_socket(screen_list, SOCK_CLIENT); 
     198            request_attach(screen_list); 
     199            if(screen_list->session_name) 
     200                free(screen_list->session_name); 
     201            screen_list->session_name = session; 
     202        } 
     203        else 
     204        { 
     205            fprintf(stderr, "Failed to attach!\n"); 
     206            free(screen_list->socket_path[SOCK_SERVER]); 
     207            screen_list->socket_path[SOCK_SERVER] = NULL; 
     208            screen_list->attach = 0; 
     209        } 
     210        for(i=0; sockets[i]; i++) 
     211            free(sockets[i]); 
     212        free(sockets); 
     213    } 
     214    else 
     215    { 
     216        fprintf(stderr, "No socket found!\n"); 
     217        screen_list->attach = 0; 
     218    } 
     219} 
     220 
    165221int send_event(caca_event_t ev, struct screen_list* screen_list) 
    166222{ 
Note: See TracChangeset for help on using the changeset viewer.