mesa: hgl: release add-ons on GLView destruction

* bump version.
This commit is contained in:
Jerome Duval
2014-02-12 20:37:26 +00:00
parent fe471077a3
commit f1c9ea309d
2 changed files with 76 additions and 52 deletions

View File

@@ -10,7 +10,7 @@ COPYRIGHT="1999-2013 Brian Paul All Rights Reserved."
LICENSE="MIT"
SRC_URI="ftp://ftp.freedesktop.org/pub/mesa/10.0.2/MesaLib-10.0.2.tar.bz2"
CHECKSUM_MD5="8544c0ab3e438a08b5103421ea15b6d2"
REVISION="2"
REVISION="3"
ARCHITECTURES="x86 x86_64"
if [ $effectiveTargetArchitecture != x86_gcc2 ]; then
# x86_gcc2 is fine as primary target architecture as long as we're building
@@ -98,11 +98,11 @@ INSTALL()
# swpipe renderer package
packageEntries swpipe \
"$addOnsDir/opengl/*Pipe"
"$addOnsDir/opengl/Software Pipe"
# swrast renderer package
packageEntries swrast \
"$addOnsDir/opengl/*Rasterizer"
"$addOnsDir/opengl/Software Rasterizer"
}
# ----- devel package -------------------------------------------------------

View File

@@ -1,13 +1,8 @@
From cc285772ce222f3672aa725dea18b52d9f94d2c2 Mon Sep 17 00:00:00 2001
From 880e1a26af698949add259ef80bc3e0e4aa55188 Mon Sep 17 00:00:00 2001
From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Mon, 30 Dec 2013 23:49:06 -0600
Subject: [PATCH] haiku: Fix missing HaikuGL header paths
Subject: haiku: Fix missing HaikuGL header paths
---
src/gallium/targets/haiku-softpipe/SConscript | 1 +
src/gallium/targets/libgl-haiku/SConscript | 1 +
src/mesa/drivers/haiku/swrast/SConscript | 1 +
3 files changed, 3 insertions(+)
diff --git a/src/gallium/targets/haiku-softpipe/SConscript b/src/gallium/targets/haiku-softpipe/SConscript
index 40bf03c..16ce7cd 100644
@@ -48,10 +43,11 @@ index 71ce88e..ca0423e 100644
--
1.8.3.4
From 72e0f3de1f2df3407dbf257183c78bd3f81c1a12 Mon Sep 17 00:00:00 2001
From add021d06196b1250454496cb3fb5b39746e2739 Mon Sep 17 00:00:00 2001
From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Tue, 31 Dec 2013 15:39:49 -0600
Subject: [PATCH] haiku libGL: Move from gallium target to src/hgl
Subject: haiku libGL: Move from gallium target to src/hgl
* The Haiku renderers need to link to libGL to function properly
in all usage contexts. As mesa drivers build before gallium
@@ -60,40 +56,6 @@ Subject: [PATCH] haiku libGL: Move from gallium target to src/hgl
* This is likely better as it mimics how glx is laid out ensuring
the Haiku libGL is better understood.
* All renderers properly link in libGL now.
---
src/SConscript | 5 +
src/gallium/SConscript | 1 -
src/gallium/targets/haiku-softpipe/SConscript | 2 +
src/gallium/targets/libgl-haiku/GLDispatcher.cpp | 72 ---
src/gallium/targets/libgl-haiku/GLDispatcher.h | 109 ----
src/gallium/targets/libgl-haiku/GLRenderer.cpp | 106 ----
.../targets/libgl-haiku/GLRendererRoster.cpp | 224 -------
src/gallium/targets/libgl-haiku/GLRendererRoster.h | 51 --
src/gallium/targets/libgl-haiku/GLView.cpp | 643 ---------------------
src/gallium/targets/libgl-haiku/SConscript | 35 --
src/hgl/GLDispatcher.cpp | 72 +++
src/hgl/GLDispatcher.h | 109 ++++
src/hgl/GLRenderer.cpp | 106 ++++
src/hgl/GLRendererRoster.cpp | 224 +++++++
src/hgl/GLRendererRoster.h | 51 ++
src/hgl/GLView.cpp | 643 +++++++++++++++++++++
src/hgl/SConscript | 36 ++
src/mesa/drivers/haiku/swrast/SConscript | 2 +
18 files changed, 1250 insertions(+), 1241 deletions(-)
delete mode 100644 src/gallium/targets/libgl-haiku/GLDispatcher.cpp
delete mode 100644 src/gallium/targets/libgl-haiku/GLDispatcher.h
delete mode 100644 src/gallium/targets/libgl-haiku/GLRenderer.cpp
delete mode 100644 src/gallium/targets/libgl-haiku/GLRendererRoster.cpp
delete mode 100644 src/gallium/targets/libgl-haiku/GLRendererRoster.h
delete mode 100644 src/gallium/targets/libgl-haiku/GLView.cpp
delete mode 100644 src/gallium/targets/libgl-haiku/SConscript
create mode 100644 src/hgl/GLDispatcher.cpp
create mode 100644 src/hgl/GLDispatcher.h
create mode 100644 src/hgl/GLRenderer.cpp
create mode 100644 src/hgl/GLRendererRoster.cpp
create mode 100644 src/hgl/GLRendererRoster.h
create mode 100644 src/hgl/GLView.cpp
create mode 100644 src/hgl/SConscript
diff --git a/src/SConscript b/src/SConscript
index 1465918..a24acea 100644
@@ -112,7 +74,7 @@ index 1465918..a24acea 100644
SConscript('mapi/vgapi/SConscript')
diff --git a/src/gallium/SConscript b/src/gallium/SConscript
index 6e27be2..32bbdbe 100644
index c68519d..7ba8070 100644
--- a/src/gallium/SConscript
+++ b/src/gallium/SConscript
@@ -119,7 +119,6 @@ if not env['embedded']:
@@ -2717,16 +2679,14 @@ index ca0423e..aef7300 100644
--
1.8.3.4
From fc7707b49c064f17ed345cf70e89e8dfa8a6738d Mon Sep 17 00:00:00 2001
From 23cc377e1ac5046aae825580033c8ec23e80d670 Mon Sep 17 00:00:00 2001
From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Tue, 21 Jan 2014 18:40:22 +0000
Subject: [PATCH] hgl: atomic stores no longer need to be volatile
Subject: hgl: atomic stores no longer need to be volatile
* Our atomics were revamped to no longer require
volatile int pointers
---
include/HaikuGL/GLRenderer.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/HaikuGL/GLRenderer.h b/include/HaikuGL/GLRenderer.h
index 7ffcc34..02a438d 100644
@@ -2744,3 +2704,67 @@ index 7ffcc34..02a438d 100644
--
1.8.3.4
From bcf7efda26051f122039df4c33e301fc6de59974 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Wed, 12 Feb 2014 20:11:25 +0000
Subject: hgl: release add-ons on GLView destruction.
diff --git a/src/hgl/GLRendererRoster.cpp b/src/hgl/GLRendererRoster.cpp
index 1712a87..3833b2c 100644
--- a/src/hgl/GLRendererRoster.cpp
+++ b/src/hgl/GLRendererRoster.cpp
@@ -79,7 +79,14 @@ GLRendererRoster::GLRendererRoster(BGLView* view, ulong options)
GLRendererRoster::~GLRendererRoster()
{
-
+ RendererMap::iterator iterator = fRenderers.begin();
+ for (; iterator != fRenderers.end(); iterator++) {
+ struct renderer_item item = iterator->second;
+ image_id image = item.image;
+ item.renderer->Release();
+ // this will delete the renderer
+ unload_add_on(image);
+ }
}
@@ -91,6 +98,7 @@ GLRendererRoster::GetRenderer(int32 id)
return NULL;
struct renderer_item item = iterator->second;
+ item.renderer->Acquire();
return item.renderer;
}
@@ -105,7 +113,7 @@ GLRendererRoster::AddDefaultPaths()
B_SYSTEM_ADDONS_DIRECTORY,
};
- for (uint32 i = fSafeMode ? 4 : 0;
+ for (uint32 i = fSafeMode ? 3 : 0;
i < sizeof(paths) / sizeof(paths[0]); i++) {
BPath path;
status_t status = find_directory(paths[i], &path, true);
diff --git a/src/hgl/GLView.cpp b/src/hgl/GLView.cpp
index 9ae5b5c..477b430 100644
--- a/src/hgl/GLView.cpp
+++ b/src/hgl/GLView.cpp
@@ -57,8 +57,11 @@ BGLView::BGLView(BRect rect, const char* name, ulong resizingMode, ulong mode,
BGLView::~BGLView()
{
delete fClipInfo;
- if (fRenderer)
+ if (fRenderer) {
fRenderer->Release();
+ fRenderer = NULL;
+ }
+ delete fRoster;
}
--
1.8.3.4