OpenBGL을 사용하여 웹캠 피드를 표시하는 FireBreath를 사용하여 Windows 용 플러그인을 개발 중입니다. 저는 윈도우 플러그인을 사용하고 있으며 별도의 스레드에서 그리기하고 있습니다. 코드는 여기에서 볼 수 있습니다 :보이는 영역이 변경되면 OpenGL 플러그인이 작동을 멈 춥니 다.
헤더 파일
소스 파일
(가 커밋에 남아 그냥 테스트입니다, onWindowResized에서 이상한 코드를 무시 .)
문제는 바로 브라우저 창이 r 플러그인의 가시 영역이 변경되거나 확장 프로그램이 스크롤 상자의 보이는 영역 외부로 스크롤되면 플러그인이 Chrome에서 충돌합니다. Firefox를 설치하지 않았지만 Internet Explorer에서 작동하기 때문에 NpApi라고 생각합니다.
나는 무슨 일이 일어나고 있는지, Chrome은 보이는 크기의 플러그인이 변경 될 때마다 새로운 HDC를 만들고 생성한다는 것을 믿습니다. 렌더링 컨텍스트가 유효하지 않지만 플러그인에서 여전히 사용되고 있으며 이로 인해 충돌이 발생합니다.
이 경우 NPP_SetWindow get이 호출되었지만 NpapiPluginModule_NPP.cpp에서는 해당 호출이 무시되므로이 이벤트에 연결할 방법이 없습니다.
Google을 몇 시간 동안 사용해 보았지만 도움이 필요하지 않습니다. 누구든지이 경험이 있습니까?
내 자신의 DC를 처리 할 수있는 플러그인 창에서 내 자식 창을 만든 경우 작동 할 수 있다고 생각합니다. 아마 실패한 Win32 기술 덕분에 실패한 빠른 테스트를했습니다. 그러나 이것이 더 많은 일을 할 수 있을까요? 내가 가지고있는 또 다른 생각은 어떻게 든 가시 영역을 추적하는 것이지만, 아직 보지 못했습니다.
이 부분을 간략히 살펴 보았으나, 더 깊이 파고 들어갈 시간은 없었습니다. OGL을 그리기없이 설정하는 것만으로 FF 및 Chrome에서 발생하며 out-of-process-plugins이 비활성화 된 경우에는 FF에서 발생하지 않습니다. FBs 창 하위 클래스를 사용하지 않으면 도움이되지 않습니다. Microsoft 심볼 서버가 구성된 Visual Studio를 연결합니다 ([Mozillas] (https : //developer.mozilla 등).org/ko/Using_the_Mozilla_symbol_server) 또한 일부 윈도우 프로세스 처리에서 스택 오버플로가 발생하여 충돌한다는 것을 알 수 있습니다 (무한 재귀). BTW,'SetWindow'는'FB :: NpapiPluginWin'을 거칩니다. –