void RenderThread::UpdateLayout() { QMutexLocker locker(&m_MutexLayout); // Find frames without layout info and delete them QMutableListIterator<FramePtr> i(m_RenderFrames); while (i.hasNext()) { FramePtr renderFrame = i.next(); if (!renderFrame) { i.remove(); continue; } int j = m_ViewIDs.indexOf(renderFrame->Info(VIEW_ID).toUInt()); if (j == -1) { m_Renderer->Deallocate(renderFrame); i.remove(); }else { QRect srcRect = m_SrcRects.at(j); float scaleX = renderFrame->Info(RENDER_SRC_SCALE_X).toFloat(); float scaleY = renderFrame->Info(RENDER_SRC_SCALE_Y).toFloat(); srcRect.setLeft((int)(srcRect.left()*scaleX)); srcRect.setRight((int)(srcRect.right()*scaleX)); srcRect.setTop((int)(srcRect.top()*scaleY)); srcRect.setBottom((int)(srcRect.bottom()*scaleY)); renderFrame->SetInfo(SRC_RECT, srcRect); renderFrame->SetInfo(DST_RECT, m_DstRects.at(j)); } } }