Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_verse.h15
-rw-r--r--source/blender/blenkernel/intern/verse_session.c47
-rw-r--r--source/blender/src/header_info.c2
-rw-r--r--source/blender/src/outliner.c8
-rw-r--r--source/blender/src/usiblender.c6
-rw-r--r--source/blender/src/verse_common.c1
6 files changed, 42 insertions, 37 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);
}
/*
diff --git a/source/blender/src/header_info.c b/source/blender/src/header_info.c
index f96bd8b7b2b..59261fb5c97 100644
--- a/source/blender/src/header_info.c
+++ b/source/blender/src/header_info.c
@@ -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:
diff --git a/source/blender/src/outliner.c b/source/blender/src/outliner.c
index 6b66eff56fb..237c4144221 100644
--- a/source/blender/src/outliner.c
+++ b/source/blender/src/outliner.c
@@ -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;
}
}
diff --git a/source/blender/src/usiblender.c b/source/blender/src/usiblender.c
index 6782a3f0c6a..666e4d9df07 100644
--- a/source/blender/src/usiblender.c
+++ b/source/blender/src/usiblender.c
@@ -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();
diff --git a/source/blender/src/verse_common.c b/source/blender/src/verse_common.c
index 4e8cf10746d..d91c09dc2cd 100644
--- a/source/blender/src/verse_common.c
+++ b/source/blender/src/verse_common.c
@@ -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;