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
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users