Code

fix crash when simplifying an lpe path: deleting the list didn't release the referenc...
[inkscape.git] / src / jabber_whiteboard / session-manager.cpp
index 55b41ac204cbb3828ef047a87567dc148ad665c9..a04ab05f00e39fa1f424141140e37e0e72260670 100644 (file)
@@ -234,6 +234,7 @@ SessionManager::processWhiteboardEvent(Pedro::XmppEvent const& event)
     }
 
     Pedro::DOMString session = root->getTagAttribute("wb", "session");
+    Pedro::DOMString type = root->getTagAttribute("message", "type");
     Pedro::DOMString domwrapper = root->getFirstChild()->getFirstChild()->getFirstChild()->getName();
 
     if (session.empty()) {
@@ -241,14 +242,17 @@ SessionManager::processWhiteboardEvent(Pedro::XmppEvent const& event)
         return;
     }
 
-    if(root->exists(Message::CONNECT_REQUEST))
+    if(root->exists(Message::CONNECT_REQUEST) && type == State::WHITEBOARD_PEER)
+    {
         handleIncomingInvitation(Invitation(event.getFrom(),session));
 
-    else
+    }else
     { 
-        Message::Wrapper wrapper = static_cast< Message::Wrapper >("protocol");
+        Message::Wrapper wrapper = static_cast< Message::Wrapper >(domwrapper);
         InkboardDocument* doc = getInkboardSession(session);
-        doc->processInkboardEvent(wrapper, root->getFirstChild());
+
+        if(doc != NULL)
+            doc->recieve(wrapper, root->getFirstChild());
     }
 }
 
@@ -325,12 +329,12 @@ SessionManager::checkInvitationQueue()
         switch (reply) {
 
             case Dialog::ACCEPT_INVITATION:{
-                inkdoc->sendProtocol(from, Message::PROTOCOL,Message::ACCEPT_INVITATION);
+                inkdoc->send(from, Message::PROTOCOL,Message::ACCEPT_INVITATION);
                 makeInkboardDesktop(doc);
                 break; }
 
             case Dialog::DECLINE_INVITATION: default: {
-                inkdoc->sendProtocol(from, Message::PROTOCOL,Message::DECLINE_INVITATION);
+                inkdoc->send(from, Message::PROTOCOL,Message::DECLINE_INVITATION);
                 terminateSession(sessionId);
                 break; }
         }
@@ -354,11 +358,11 @@ makeInkboardDocument(int code, gchar const* rootname, State::SessionType type, G
     InkboardDocument* rdoc = new InkboardDocument(g_quark_from_static_string("xml"), type, to);
     rdoc->setAttribute("version", "1.0");
     rdoc->setAttribute("standalone", "no");
-    XML::Node *comment = sp_repr_new_comment(" Created with Inkscape (http://www.inkscape.org/) ");
+    XML::Node *comment = rdoc->createComment(" Created with Inkscape (http://www.inkscape.org/) ");
     rdoc->appendChild(comment);
     GC::release(comment);
 
-    XML::Node* root = sp_repr_new(rootname);
+    XML::Node* root = rdoc->createElement(rootname);
     rdoc->appendChild(root);
     GC::release(root);
 
@@ -394,6 +398,7 @@ makeInkboardDesktop(SPDocument* doc)
         sp_create_window(dtw, TRUE);
         dt = static_cast<SPDesktop*>(dtw->view);
         sp_namedview_window_from_document(dt);
+        sp_namedview_update_layers_from_document(dt);
     }
 
     return dt;