forked from bartvdbraak/blender
* fix totblock error when quiting blender with sessions open
* add "Disconnect"-menu when RMB on verse server that is connected in outliner
This commit is contained in:
parent
6468b1705b
commit
282b0d528d
@ -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 */
|
||||
|
@ -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)
|
||||
@ -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);
|
||||
|
@ -766,7 +766,7 @@ static void do_verse_filemenu(void *arg, int event)
|
||||
session = session_menu();
|
||||
if(session) {
|
||||
printf("Disconnecting session: %s!\n", session->address);
|
||||
end_verse_session(session, 1);
|
||||
end_verse_session(session);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
|
@ -1632,7 +1632,7 @@ static int do_outliner_mouse_event(SpaceOops *soops, TreeElement *te, short even
|
||||
}
|
||||
switch(event) {
|
||||
case 1:
|
||||
end_verse_session(session, 1);
|
||||
end_verse_session(session);
|
||||
break;
|
||||
case 2:
|
||||
vnode = session->nodes.lb.first;
|
||||
@ -1677,9 +1677,9 @@ static int do_outliner_mouse_event(SpaceOops *soops, TreeElement *te, short even
|
||||
if(!(vserver->flag & VERSE_CONNECTING) && !(vserver->flag & VERSE_CONNECTED)) {
|
||||
event = pupmenu("VerseServer %t| Connect %x1");
|
||||
} else if((vserver->flag & VERSE_CONNECTING) && !(vserver->flag & VERSE_CONNECTED)) {
|
||||
event = pupmenu("VerseServer %t| Connecting... %x2");
|
||||
event = pupmenu("VerseServer %t| Connecting %x2");
|
||||
} else if(!(vserver->flag & VERSE_CONNECTING) && (vserver->flag & VERSE_CONNECTED)) {
|
||||
event = pupmenu("VerseServer %t| Connected %x3");
|
||||
event = pupmenu("VerseServer %t| Disconnect %x3");
|
||||
}
|
||||
switch(event) {
|
||||
case 1:
|
||||
@ -1687,7 +1687,9 @@ static int do_outliner_mouse_event(SpaceOops *soops, TreeElement *te, short even
|
||||
vserver->flag |= VERSE_CONNECTING;
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
end_verse_session(vserver->session);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -853,6 +853,9 @@ void exit_usiblender(void)
|
||||
tf= tf->next;
|
||||
}
|
||||
BLI_freelistN(&G.ttfdata);
|
||||
#ifdef WITH_VERSE
|
||||
end_all_verse_sessions();
|
||||
#endif
|
||||
free_openrecent();
|
||||
|
||||
freeAllRad();
|
||||
@ -900,9 +903,6 @@ void exit_usiblender(void)
|
||||
sound_exit_audio();
|
||||
if(G.listener) MEM_freeN(G.listener);
|
||||
|
||||
#ifdef WITH_VERSE
|
||||
end_all_verse_sessions();
|
||||
#endif
|
||||
|
||||
libtiff_exit();
|
||||
|
||||
|
@ -255,6 +255,7 @@ void post_connect_terminated(VerseSession *session)
|
||||
while(server) {
|
||||
if(strcmp(server->ip, session->address)==0) {
|
||||
server->flag = 0;
|
||||
server->session=NULL;
|
||||
break;
|
||||
}
|
||||
server = server->next;
|
||||
|
Loading…
Reference in New Issue
Block a user