Hi, it looks like you are trying to use a QTextCursor object as an argument in a Qt slot wich you are connecting to a signal via a queued connection. Since QTextCursor is not a type known natively to the Qt meta-object system, you need to call qRegisterMetaType for QTextCursor yourself, like the error message suggests. This is really a Qt related issue.
Best, Sascha On 04/28/2015 02:07 PM, Gomez, Alberto wrote: > Dear all, > > I am trying to display a stream of images that I have access to at a > certain frame rate. For simplicity, let's assume they are 2D images, > they all have the same size/extent etc and only the actual pixel data > changes. > > I have been looking at the US module, and particularly at > UltrasoundSupport.cpp, Where they do the following: > > void UltrasoundSupport::DisplayImage() > { > //Update device > m_Device->Modified(); > m_Device->Update(); > > //Only update the view if the image is shown > if(m_Controls.m_ShowImageStream->isChecked()) > { > //Update data node > mitk::Image::Pointer curOutput = m_Device->GetOutput(); > m_Node->SetData(curOutput); > > // if the geometry changed: reinitialize the ultrasound image > if((m_OldGeometry.IsNotNull()) && > (curOutput->GetGeometry() != NULL) && > (!mitk::Equal(m_OldGeometry.GetPointer(),curOutput->GetGeometry(),0.0001,false)) > ) > { > mitk::IRenderWindowPart* renderWindow = this->GetRenderWindowPart(); > if ( (renderWindow != NULL) && > (curOutput->GetTimeGeometry()->IsValid()) && > (m_Controls.m_ShowImageStream->isChecked()) ) > { > renderWindow->GetRenderingManager()->InitializeViews( > curOutput->GetGeometry(), > mitk::RenderingManager::REQUEST_UPDATE_ALL, true ); > renderWindow->GetRenderingManager()->RequestUpdateAll(); > } > m_CurrentImageWidth = curOutput->GetDimension(0); > m_CurrentImageHeight = curOutput->GetDimension(1); > m_OldGeometry = > dynamic_cast<mitk::SlicedGeometry3D*>(curOutput->GetGeometry()); > } > //if not: only update the view > else > { > this->RequestRenderWindowUpdate(); > } > } > > I am basically doing the same thing, with just minor differences due to > my data structure: > > > void StreamingView::ImagingHandler(LayerObject::Pointer tlo){ > > DNLDataHandler::Pointer dataHandler = DNLDataHandler::Pointer(new > DNLDataHandler()); > > std::vector< vtkSmartPointer<vtkImageData> > imageData; > { > imageData = dataHandler->createImage(tlo); > } > if (!imageData.size()){ > return; > } > > this->m_FrameCounter++; > > /// Add the data to the viewer > { > > /// Option 1: attempt to get data from my RT source > mitk::Image::Pointer mitkImage = mitk::Image::New(); > mitkImage->Initialize(imageData[0]); > mitkImage->SetVolume(imageData[0]->GetScalarPointer()); > this->m_Node->SetData(mitkImage); > > /// Option 2: generate a random image > // mitk::Image::Pointer dummyImage = > mitk::ImageGenerator::GenerateRandomImage<float>(100, 100, 100, 1, 1, 1, > 1, 255,0); > // this->m_Node->SetData(dummyImage); > > if((this->m_OldGeometry.IsNotNull()) && > (mitkImage->GetGeometry() != NULL) && > (!mitk::Equal(m_OldGeometry.GetPointer(),mitkImage->GetGeometry(),0.0001,false))) > { > mitk::IRenderWindowPart* renderWindow = > this->GetRenderWindowPart(); > if ( (renderWindow != NULL) && > (mitkImage->GetTimeGeometry()->IsValid()) ) // && > (this->m_Controls.m_ShowImageStream->isChecked()) ) > { > renderWindow->GetRenderingManager()->InitializeViews( > mitkImage->GetGeometry(), > mitk::RenderingManager::REQUEST_UPDATE_ALL, true ); > renderWindow->GetRenderingManager()->RequestUpdateAll(); > } > this->m_OldGeometry = > dynamic_cast<mitk::SlicedGeometry3D*>(mitkImage->GetGeometry()); > } > else > { //if not: only update the view > this->RequestRenderWindowUpdate(); > mitk::RenderingManager::GetInstance()->RequestUpdateAll(); > } > > } > } > > The above function is called every time there is a new image available, > which happens roughly every 50 ms. Unfortunately when I run my plugin, > the app crashes giving the following error: > > [Tue Apr 28 12:55:13 20150.573] Logfile: > xxxxxxxxxxxxxxxxxxx/data/13/mitk-0.log > [1.036] [BlueBerry] LOG: Warning: Detected recursive attempt by part > org.mitk.views.datamanager to create itself (this is probably, but not > necessarily, a bug) > [1.209] [BlueBerry] BlueBerry Workbench ready > QObject::connect: Cannot queue arguments of type 'QTextCursor' > (Make sure 'QTextCursor' is registered using qRegisterMetaType().) > Aborted (core dumped) > > Now, if I add a line > std::this_thread::sleep_for(std::chrono::milliseconds(1000)); > just before this->m_Node->SetData(mitkImage); > > It does not crash for a little while, shows me the images flowing > through (for some reason the coronal view does not update , although the > coronal slice in the 3D view does ) but after a few seconds, or if I > try to interact with any of the views, the app crashes with the same > error as above. > > I do not think the error is related to my data source because if I > comment Option1 above and uncomment Option 2 I get the same result. > > > Sometimes (not always) I additionally get an extra error bit: > > [1.178] [BlueBerry] BlueBerry Workbench ready > QObject::connect: Cannot queue arguments of type 'QTextCursor' > (Make sure 'QTextCursor' is registered using qRegisterMetaType().) > [xcb] Unknown request in queue while dequeuing > [xcb] Most likely this is a multi-threaded client and XInitThreads has > not been called > [xcb] Aborting, sorry about that. > MyApp: ../../src/xcb_io.c:179: dequeue_pending_request: Assertion > `!xcb_xlib_unknown_req_in_deq' failed. > Aborted (core dumped) > > Any advice/help? > > Thanks a lot! > > > > > ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ mitk-users mailing list mitk-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mitk-users