qt thread blocking현상에 대해 질문 올립니다. 꼭 좀 도와주세요.
글쓴이: motionblue / 작성시간: 수, 2012/03/14 - 11:21오후
현재 libvlc를 이용하여 rtsp streaming play를 구현중에 있습니다.
문제는 유효하지 않은 주소나 꺼져있는 카메라 연결 시 vlc에서 접속을 시도중일 때 gui가 먹통이 되는 것입니다.
구조는 이렇습니다.
MainWindow -> VlcWrapper Class(QWidget상속) ->thread 생성
mainwindow ui에 영상을 뿌려지는 QFrame이 있고 libvlc 관련 함수들을 쓸수 있는 wrapper class를 만들어서 play,stop등을 하고 있습니다.
wrapper class에서 QThread를 상속받은 class에서 play,stop등이 이루어지게 하고 있습니다.그런데 thread임에도 불구하고 잘못된 주소접속시나 연결이 끊어진 카메라에 접속시도중 stop을 하게 되면 그 시간이 오래걸리는데 그 함수를 통과할때까지 ui가 먹통이 됩니다.
제가 qt에 대해 잘 몰라 너무 막막합니다.
꼭 좀 도움부탁드립니다.
void StopTransaction::apply(libvlc_instance_t *pInstance,libvlc_media_t *pMedia,libvlc_media_player_t *pPlayer) { libvlc_media_player_stop(pPlayer); //이 부분에서 stop을 시도시에 연결이 끊어진 카메라나 잘못된 주소일 경우 접속 시도중에 stop을 하였을 때 이 함수를 통과전에는 gui가 blocking이 되어 gui를 조작할 수가 없습니다. }
잘못된 주소나 연결이 끊어진 카메라 접속 시도중에도 stop을 하였을 때 thread에서 돌고 gui는 조작이 가능하게 해야합니다.
꼭 좀 도와주세요.
Forums:
댓글 달기