参与开发
Thinkvd中的Effect,由于播放是开启了另一个线程(简称线程sdl)来实现的,发现在视频播放的pause状态下,切换视频效果,Effect窗口不响应,需要把Mouse放到effect窗口上才响应。测试方法:
1。若直接把Effect窗口放到线程sdl中repaint, 提示在多线中异常。
2。若线程sdl向Effect窗口连signal->slot则无响应。
这个问题是出在sdl上还是QT上目前难确定。
1。若直接把Effect窗口放到线程sdl中repaint, 提示在多线中异常。
2。若线程sdl向Effect窗口连signal->slot则无响应。
这个问题是出在sdl上还是QT上目前难确定。
查了一下资料,据说需要:
UI要跟app在同一线程~
解决办法:
在切换时,延时向Effect窗口发出需要刷新的消息.
void ImEffectWidget::changeEffectEvent(int etype, void *data)
{
SDL_Event event;
event.type = etype;
event.user.data1 = data;
if (event.type == TAB_CATALOG_WATERMARK) //skip if no item
{
if (m_ui.listWidgetWatermark->count() < 1)
return;
//else ok.
}
SDL_PushEvent( &event );
{
if (m_ui.listWidgetWatermark->count() < 1)
return;
//else ok.
}
SDL_PushEvent( &event );
int nStatus = m_treeItem->mdata("play_status").toInt();
if (nStatus != TASK_STATUS_WORKING){
QTimer::singleShot(20, m_ui.renderVideo2, SLOT(slotUpdateWindow())); //延时刷新窗口。
}
}
if (nStatus != TASK_STATUS_WORKING){
QTimer::singleShot(20, m_ui.renderVideo2, SLOT(slotUpdateWindow())); //延时刷新窗口。
}
}