mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-04 05:30:32 -05:00 
			
		
		
		
	OpenGL modernization: GLScope: enhance openGL context checking and debugging at initializeGL time
This commit is contained in:
		
							parent
							
								
									264022d2ca
								
							
						
					
					
						commit
						92a588b060
					
				@ -19,6 +19,7 @@
 | 
			
		||||
#define INCLUDE_GUI_GLSHADERSIMPLE_H_
 | 
			
		||||
 | 
			
		||||
#include <QString>
 | 
			
		||||
#include <QOpenGLFunctions>
 | 
			
		||||
 | 
			
		||||
class QOpenGLShaderProgram;
 | 
			
		||||
class QMatrix4x4;
 | 
			
		||||
 | 
			
		||||
@ -21,6 +21,7 @@
 | 
			
		||||
#include <QMouseEvent>
 | 
			
		||||
#include <QOpenGLContext>
 | 
			
		||||
#include <QOpenGLFunctions>
 | 
			
		||||
#include <QSurface>
 | 
			
		||||
#include "gui/glscope.h"
 | 
			
		||||
#include "dsp/dspengine.h"
 | 
			
		||||
 | 
			
		||||
@ -239,6 +240,7 @@ void GLScope::newTrace(const std::vector<Complex>& trace, int sampleRate)
 | 
			
		||||
void GLScope::initializeGL()
 | 
			
		||||
{
 | 
			
		||||
	QOpenGLContext *glCurrentContext =  QOpenGLContext::currentContext();
 | 
			
		||||
	//QOpenGLContext *glCurrentContext =  context();
 | 
			
		||||
 | 
			
		||||
	if (glCurrentContext) {
 | 
			
		||||
		if (QOpenGLContext::currentContext()->isValid()) {
 | 
			
		||||
@ -255,6 +257,28 @@ void GLScope::initializeGL()
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	QSurface *surface = glCurrentContext->surface();
 | 
			
		||||
 | 
			
		||||
	if (surface == 0)
 | 
			
		||||
	{
 | 
			
		||||
		qCritical() << "GLScope::initializeGL: no surface attached";
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		if (surface->surfaceType() != QSurface::OpenGLSurface)
 | 
			
		||||
		{
 | 
			
		||||
			qCritical() << "GLScope::initializeGL: surface is not an OpenGLSurface: " << surface->surfaceType()
 | 
			
		||||
				<< " cannot use an OpenGL context";
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			qDebug() << "GLScope::initializeGL: OpenGL surface:"
 | 
			
		||||
				<< " class: " << (surface->surfaceClass() == QSurface::Window ? "Window" : "Offscreen");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	connect(glCurrentContext, &QOpenGLContext::aboutToBeDestroyed, this, &GLScope::cleanup); // TODO: when migrating to QOpenGLWidget
 | 
			
		||||
 | 
			
		||||
	QOpenGLFunctions *glFunctions = QOpenGLContext::currentContext()->functions();
 | 
			
		||||
@ -2825,12 +2849,12 @@ void GLScope::connectTimer(const QTimer& timer)
 | 
			
		||||
 | 
			
		||||
void GLScope::cleanup()
 | 
			
		||||
{
 | 
			
		||||
	makeCurrent();
 | 
			
		||||
	//makeCurrent();
 | 
			
		||||
	m_glShaderSimple.cleanup();
 | 
			
		||||
	m_glShaderBottom1Scale.cleanup();
 | 
			
		||||
	m_glShaderBottom2Scale.cleanup();
 | 
			
		||||
	m_glShaderLeft1Scale.cleanup();
 | 
			
		||||
	m_glShaderPowerOverlay.cleanup();
 | 
			
		||||
    doneCurrent();
 | 
			
		||||
    //doneCurrent();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user