diff options
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_verse.h | 15 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/verse_session.c | 47 |
2 files changed, 32 insertions, 30 deletions
diff --git a/source/blender/blenkernel/BKE_verse.h b/source/blender/blenkernel/BKE_verse.h index 932a11f2f94..8d93cda7118 100644 --- a/source/blender/blenkernel/BKE_verse.h +++ b/source/blender/blenkernel/BKE_verse.h @@ -323,12 +323,6 @@ typedef struct VNode { void (*post_node_name_set)(struct VNode *vnode); } VNode; -typedef struct VerseServer { - struct VerseServer *next, *prev; - char *name; /* human-readable server name */ - char *ip; /* string containing IP/domain name of verse server and number of port */ - short flag; /* flag: VERSE_CONNECTING, VERSE_CONNECTED */ -} VerseServer; /* * Verse Session: verse client can be connected to several verse servers @@ -353,6 +347,13 @@ typedef struct VerseSession { void (*post_connect_update)(struct VerseSession *session); } VerseSession; +typedef struct VerseServer { + struct VerseServer *next, *prev; + char *name; /* human-readable server name */ + char *ip; /* string containing IP/domain name of verse server and number of port */ + short flag; /* flag: VERSE_CONNECTING, VERSE_CONNECTED */ + struct VerseSession *session; /* pointer to related session */ +} VerseServer; /* * list of post callback functions */ @@ -448,7 +449,7 @@ void free_verse_session(struct VerseSession *session); void b_verse_update(void); void b_vers_ms_get(void); void b_verse_connect(char *address); -void end_verse_session(struct VerseSession *session, char free); +void end_verse_session(struct VerseSession *session); void end_all_verse_sessions(void); /* functions from verse_node.c */ diff --git a/source/blender/blenkernel/intern/verse_session.c b/source/blender/blenkernel/intern/verse_session.c index b5f21213f0d..67515cab3cb 100644 --- a/source/blender/blenkernel/intern/verse_session.c +++ b/source/blender/blenkernel/intern/verse_session.c @@ -169,11 +169,13 @@ static void cb_connect_accept( if(strcmp(session->address, server->ip)==0) { server->flag |= VERSE_CONNECTED; server->flag &= ~VERSE_CONNECTING; + server->session = session; + break; } server = server->next; } - printf("\tBlender was connected to verse server: %s\n", (char*)address); + printf("\tBlender is connected to verse server: %s\n", (char*)address); printf("\tVerseSession->counter: %d\n", session->counter); session->avatar = avatar; @@ -369,7 +371,7 @@ VerseSession *create_verse_session( /* * end verse session and free all session data */ -void end_verse_session(VerseSession *session, char free) +void end_verse_session(VerseSession *session) { /* send terminate command to verse server */ verse_send_connect_terminate(session->address, "blender: bye bye"); @@ -381,10 +383,8 @@ void end_verse_session(VerseSession *session, char free) session->flag &= ~VERSE_CONNECTED; /* do post connect operations */ session->post_connect_terminated(session); - /* free session data */ - free_verse_session_data(session); /* free structure of verse session */ - if(free) free_verse_session(session); + free_verse_session(session); } void free_all_servers(void) @@ -394,12 +394,12 @@ void free_all_servers(void) server = server_list.first; while(server) { - nextserver = server->next; - BLI_remlink(&server_list, server); - MEM_freeN(server->name); - MEM_freeN(server->ip); - MEM_freeN(server); - server = nextserver; + nextserver = server->next; + BLI_remlink(&server_list, server); + MEM_freeN(server->name); + MEM_freeN(server->ip); + MEM_freeN(server); + server = nextserver; } BLI_freelistN(&server_list); @@ -411,14 +411,15 @@ void free_all_servers(void) */ void end_all_verse_sessions(void) { - VerseSession *session; + VerseSession *session,*nextsession; session = session_list.first; while(session) { - end_verse_session(session, 0); + nextsession= session->next; + end_verse_session(session); /* end next session */ - session = session->next; + session = nextsession; } BLI_freelistN(&session_list); @@ -431,16 +432,16 @@ void end_all_verse_sessions(void) */ void b_verse_ms_get(void) { - if(cb_ping_registered==0) { - /* handle ping messages (for master server) */ - verse_callback_set(verse_send_ping, cb_ping, NULL); - add_screenhandler(G.curscreen, SCREEN_HANDLER_VERSE, 1); - cb_ping_registered++; - } - free_all_servers(); + if(cb_ping_registered==0) { + /* handle ping messages (for master server) */ + verse_callback_set(verse_send_ping, cb_ping, NULL); + add_screenhandler(G.curscreen, SCREEN_HANDLER_VERSE, 1); + cb_ping_registered++; + } + free_all_servers(); - verse_ms_get_send(U.versemaster, VERSE_MS_FIELD_DESCRIPTION, NULL); - verse_callback_update(10); + verse_ms_get_send(U.versemaster, VERSE_MS_FIELD_DESCRIPTION, NULL); + verse_callback_update(10); } /* |