Re #1790: Misc fixes:
* Fixed crash when trying to set NULL surface * Fixed race condition between setting surface and rendering * Fixed crash due to GC of VideoWindow git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@5016 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
parent
b4225a2b48
commit
c52460741a
|
@ -229,7 +229,7 @@ static pj_status_t render(void * data)
|
||||||
{
|
{
|
||||||
struct andgl_stream *stream = (struct andgl_stream *)data;
|
struct andgl_stream *stream = (struct andgl_stream *)data;
|
||||||
|
|
||||||
if (!stream->window || stream->err_rend == 0)
|
if (stream->display == EGL_NO_DISPLAY || stream->err_rend == 0)
|
||||||
return PJ_SUCCESS;
|
return PJ_SUCCESS;
|
||||||
|
|
||||||
pjmedia_vid_dev_opengl_draw(stream->gl_buf, stream->vid_size.w,
|
pjmedia_vid_dev_opengl_draw(stream->gl_buf, stream->vid_size.w,
|
||||||
|
@ -481,7 +481,7 @@ static pj_status_t andgl_stream_put_frame(pjmedia_vid_dev_stream *strm,
|
||||||
struct andgl_stream *stream = (struct andgl_stream*)strm;
|
struct andgl_stream *stream = (struct andgl_stream*)strm;
|
||||||
pj_status_t status;
|
pj_status_t status;
|
||||||
|
|
||||||
if (!stream->is_running || !stream->window)
|
if (!stream->is_running || stream->display == EGL_NO_DISPLAY)
|
||||||
return PJ_EINVALIDOP;
|
return PJ_EINVALIDOP;
|
||||||
|
|
||||||
stream->frame = frame;
|
stream->frame = frame;
|
||||||
|
|
|
@ -95,7 +95,7 @@ class MyCall extends Call {
|
||||||
cmi.getStatus() == pjsua_call_media_status.PJSUA_CALL_MEDIA_ACTIVE &&
|
cmi.getStatus() == pjsua_call_media_status.PJSUA_CALL_MEDIA_ACTIVE &&
|
||||||
cmi.getVideoIncomingWindowId() != pjsua2.INVALID_ID)
|
cmi.getVideoIncomingWindowId() != pjsua2.INVALID_ID)
|
||||||
{
|
{
|
||||||
vidWin = cmi.getVideoWindow();
|
vidWin = new VideoWindow(cmi.getVideoIncomingWindowId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ using namespace pj;
|
||||||
%ignore pj::WindowHandle::display;
|
%ignore pj::WindowHandle::display;
|
||||||
%ignore pj::WindowHandle::window;
|
%ignore pj::WindowHandle::window;
|
||||||
%typemap(in) jobject surface {
|
%typemap(in) jobject surface {
|
||||||
$1 = (jobject)ANativeWindow_fromSurface(jenv, $input);
|
$1 = ($input? (jobject)ANativeWindow_fromSurface(jenv, $input): NULL);
|
||||||
}
|
}
|
||||||
%extend pj::WindowHandle {
|
%extend pj::WindowHandle {
|
||||||
void setWindow(jobject surface) { $self->window = surface; }
|
void setWindow(jobject surface) { $self->window = surface; }
|
||||||
|
|
Loading…
Reference in New Issue