mirror of
https://github.com/yann64/haikuports.git
synced 2026-03-19 01:46:00 +01:00
libglvnd: Bump patchset to latest revision
This commit is contained in:
@@ -4,7 +4,7 @@ pipeline."
|
||||
HOMEPAGE="http://gitlab.freedesktop.org/glvnd/libglvnd"
|
||||
COPYRIGHT="2013, NVIDIA CORPORATION"
|
||||
LICENSE="MIT"
|
||||
REVISION="3"
|
||||
REVISION="4"
|
||||
SOURCE_URI="https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v$portVersion/libglvnd-v$portVersion.tar.gz"
|
||||
SOURCE_DIR="libglvnd-v$portVersion"
|
||||
CHECKSUM_SHA256="2b6e15b06aafb4c0b6e2348124808cbd9b291c647299eaaba2e3202f51ff2f3d"
|
||||
|
||||
@@ -1,67 +1,79 @@
|
||||
From 459bf13875768bac1b93203ec5454808c9a7aae4 Mon Sep 17 00:00:00 2001
|
||||
From 9d7f6af5dd7e6e2976c43968757c7037f813b55f Mon Sep 17 00:00:00 2001
|
||||
From: Alexander von Gluck <alex@terarocket.io>
|
||||
Date: Tue, 9 Apr 2024 07:52:08 -0500
|
||||
Subject: [PATCH] Haiku: guard calls to fRenderer in HGL
|
||||
|
||||
* Prevents dereferencing fRenderer when an EGL renderer is not found
|
||||
* Add nice error text back to OpenGL view to give the user some feedback
|
||||
---
|
||||
src/HGL/GLView.cpp | 18 ++++++++++++++++--
|
||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||
src/HGL/GLView.cpp | 32 ++++++++++++++++++++++----------
|
||||
1 file changed, 22 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/HGL/GLView.cpp b/src/HGL/GLView.cpp
|
||||
index 3719522..027a78c 100644
|
||||
index 3719522..e0430cb 100644
|
||||
--- a/src/HGL/GLView.cpp
|
||||
+++ b/src/HGL/GLView.cpp
|
||||
@@ -327,7 +327,11 @@ BGLView::~BGLView()
|
||||
void
|
||||
@@ -328,7 +328,8 @@ void
|
||||
BGLView::LockGL()
|
||||
{
|
||||
+ if (fRenderer == NULL)
|
||||
+ return;
|
||||
+
|
||||
fDisplayLock.Lock();
|
||||
- if (fDisplayLock.CountLocks() == 1) {
|
||||
+
|
||||
if (fDisplayLock.CountLocks() == 1) {
|
||||
+ if (fRenderer != NULL && fDisplayLock.CountLocks() == 1) {
|
||||
fRenderer->display->eglMakeCurrent(fRenderer->display->eglDpy, fRenderer->eglSurf,
|
||||
fRenderer->eglSurf, fRenderer->eglCtx);
|
||||
@@ -337,6 +341,9 @@ BGLView::LockGL()
|
||||
void
|
||||
BGLView::UnlockGL()
|
||||
{
|
||||
+ if (fRenderer == NULL)
|
||||
+ return;
|
||||
+
|
||||
thread_id lockerThread = fDisplayLock.LockingThread();
|
||||
thread_id callerThread = find_thread(NULL);
|
||||
}
|
||||
@@ -345,7 +346,7 @@ BGLView::UnlockGL()
|
||||
(int)lockerThread, (int)callerThread);
|
||||
}
|
||||
|
||||
@@ -362,6 +369,8 @@ void
|
||||
- if (fDisplayLock.CountLocks() == 1) {
|
||||
+ if (fRenderer != NULL && fDisplayLock.CountLocks() == 1) {
|
||||
fRenderer->display->eglMakeCurrent(fRenderer->display->eglDpy, EGL_NO_SURFACE,
|
||||
EGL_NO_SURFACE, EGL_NO_CONTEXT);
|
||||
}
|
||||
@@ -362,7 +363,8 @@ void
|
||||
BGLView::SwapBuffers(bool vSync)
|
||||
{
|
||||
_LockDraw();
|
||||
+ if (fRenderer == NULL)
|
||||
+ return;
|
||||
fRenderer->SwapBuffers();
|
||||
- fRenderer->SwapBuffers();
|
||||
+ if (fRenderer != NULL)
|
||||
+ fRenderer->SwapBuffers();
|
||||
_UnlockDraw();
|
||||
}
|
||||
@@ -376,6 +385,8 @@ BGLView::EmbeddedView()
|
||||
|
||||
@@ -376,7 +378,9 @@ BGLView::EmbeddedView()
|
||||
void*
|
||||
BGLView::GetGLProcAddress(const char* procName)
|
||||
{
|
||||
+ if (fRenderer == NULL)
|
||||
+ return NULL;
|
||||
return (void*)fRenderer->display->eglGetProcAddress(procName);
|
||||
- return (void*)fRenderer->display->eglGetProcAddress(procName);
|
||||
+ if (fRenderer != NULL)
|
||||
+ return (void*)fRenderer->display->eglGetProcAddress(procName);
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
@@ -416,7 +427,7 @@ BGLView::Draw(BRect updateRect)
|
||||
status_t
|
||||
@@ -415,12 +419,17 @@ void
|
||||
BGLView::Draw(BRect updateRect)
|
||||
{
|
||||
BRegion region(updateRect);
|
||||
PthreadMutexLocker lock(&fRenderer->fLock);
|
||||
- PthreadMutexLocker lock(&fRenderer->fLock);
|
||||
- if (fRenderer->fBitmap.IsSet()) {
|
||||
+ if (fRenderer != NULL && fRenderer->fBitmap.IsSet()) {
|
||||
+ PthreadMutexLocker lock(&fRenderer->fLock);
|
||||
DrawBitmap(fRenderer->fBitmap.Get(), B_ORIGIN);
|
||||
region.Exclude(fRenderer->fBitmap->Bounds());
|
||||
}
|
||||
@@ -428,7 +439,7 @@ BGLView::AttachedToWindow()
|
||||
FillRegion(®ion, B_SOLID_LOW);
|
||||
+
|
||||
+ if (fRenderer == NULL) {
|
||||
+ MovePenTo(8, 32);
|
||||
+ DrawString("No EGL renderer available!");
|
||||
+ }
|
||||
}
|
||||
|
||||
void
|
||||
@@ -428,7 +437,7 @@ BGLView::AttachedToWindow()
|
||||
{
|
||||
BView::AttachedToWindow();
|
||||
|
||||
@@ -70,16 +82,22 @@ index 3719522..027a78c 100644
|
||||
PthreadMutexLocker lock(&fRenderer->fLock);
|
||||
fRenderer->width = Bounds().IntegerWidth() + 1;
|
||||
fRenderer->height = Bounds().IntegerHeight() + 1;
|
||||
@@ -462,6 +473,9 @@ BGLView::EnableDirectMode(bool enabled)
|
||||
@@ -462,9 +471,12 @@ BGLView::EnableDirectMode(bool enabled)
|
||||
void BGLView::FrameResized(float width, float height)
|
||||
{
|
||||
BView::FrameResized(width, height);
|
||||
- PthreadMutexLocker lock(&fRenderer->fLock);
|
||||
- fRenderer->width = (uint32_t)width + 1;
|
||||
- fRenderer->height = (uint32_t)height + 1;
|
||||
+
|
||||
+ if (fRenderer == NULL)
|
||||
+ return;
|
||||
PthreadMutexLocker lock(&fRenderer->fLock);
|
||||
fRenderer->width = (uint32_t)width + 1;
|
||||
fRenderer->height = (uint32_t)height + 1;
|
||||
+ if (fRenderer != NULL) {
|
||||
+ PthreadMutexLocker lock(&fRenderer->fLock);
|
||||
+ fRenderer->width = (uint32_t)width + 1;
|
||||
+ fRenderer->height = (uint32_t)height + 1;
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.43.2
|
||||
|
||||
|
||||
Reference in New Issue
Block a user