Skip to content

Commit

Permalink
fix(GLRender): call glUseProgram when program changed
Browse files Browse the repository at this point in the history
  • Loading branch information
I-m-SuperMan authored and pingkai committed Sep 18, 2020
1 parent 668e076 commit 6020c0e
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 4 deletions.
4 changes: 4 additions & 0 deletions framework/render/video/glRender/CV420PProgramContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,10 @@ int CV420PProgramContext::initProgram() {
return 0;
}

void CV420PProgramContext::useProgram(){
glUseProgram(mCVProgram);
}

void CV420PProgramContext::updateScale(IVideoRender::Scale scale) {
if (mScale != scale) {
mScale = scale;
Expand Down
2 changes: 2 additions & 0 deletions framework/render/video/glRender/CV420PProgramContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ class CV420PProgramContext : public IProgramContext {

int initProgram() override;

void useProgram() override;

void updateScale(IVideoRender::Scale scale) override;

void updateRotate(IVideoRender::Rotate rotate) override;
Expand Down
9 changes: 5 additions & 4 deletions framework/render/video/glRender/GLRender.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ void GLRender::VSyncOnDestroy()
{
mPrograms.clear();

if(mContext == nullptr) {
if (mContext == nullptr) {
return;
}

Expand All @@ -273,7 +273,7 @@ void GLRender::VSyncOnDestroy()

bool GLRender::renderActually()
{
if(mContext == nullptr) {
if (mContext == nullptr) {
return false;
}

Expand All @@ -296,7 +296,6 @@ bool GLRender::renderActually()
}

#endif

bool displayViewChanged = false;
{
unique_lock<mutex> viewLock(mViewMutex);
Expand Down Expand Up @@ -523,7 +522,9 @@ void *GLRender::getSurface()
IProgramContext *GLRender::getProgram(int frameFormat, IAFFrame *frame)
{
if (mPrograms.count(frameFormat) > 0) {
return mPrograms[frameFormat].get();
IProgramContext *pContext = mPrograms[frameFormat].get();
pContext->useProgram();
return pContext;
}

unique_ptr<IProgramContext> targetProgram{nullptr};
Expand Down
2 changes: 2 additions & 0 deletions framework/render/video/glRender/IProgramContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ class IProgramContext {

virtual int initProgram() = 0;

virtual void useProgram() = 0;

virtual void createSurface() {
}

Expand Down
4 changes: 4 additions & 0 deletions framework/render/video/glRender/OESProgramContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@ int OESProgramContext::initProgram() {
return 0;
}

void OESProgramContext::useProgram(){
glUseProgram(mOESProgram);
}

void OESProgramContext::updateScale(IVideoRender::Scale scale) {
if (mScale != scale) {
mScale = scale;
Expand Down
2 changes: 2 additions & 0 deletions framework/render/video/glRender/OESProgramContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ class OESProgramContext : public IProgramContext , private DecoderSurfaceCallbac
private:
int initProgram() override;

void useProgram() override;

void createSurface() override;

void *getSurface() override;
Expand Down
4 changes: 4 additions & 0 deletions framework/render/video/glRender/YUVProgramContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,10 @@ int YUVProgramContext::initProgram() {
return 0;
}

void YUVProgramContext::useProgram(){
glUseProgram(mProgram);
}

void YUVProgramContext::updateScale(IVideoRender::Scale scale) {
if (mScale != scale) {
mScale = scale;
Expand Down
2 changes: 2 additions & 0 deletions framework/render/video/glRender/YUVProgramContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ class YUVProgramContext : public IProgramContext {
private:
int initProgram() override ;

void useProgram() override ;

void updateScale(IVideoRender::Scale scale) override ;

void updateFlip(IVideoRender::Flip flip) override ;
Expand Down

0 comments on commit 6020c0e

Please sign in to comment.