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" LICENSE="MIT"
SRC_URI="ftp://ftp.freedesktop.org/pub/mesa/10.0.2/MesaLib-10.0.2.tar.bz2" SRC_URI="ftp://ftp.freedesktop.org/pub/mesa/10.0.2/MesaLib-10.0.2.tar.bz2"
CHECKSUM_MD5="8544c0ab3e438a08b5103421ea15b6d2" CHECKSUM_MD5="8544c0ab3e438a08b5103421ea15b6d2"
REVISION="2" REVISION="3"
ARCHITECTURES="x86 x86_64" ARCHITECTURES="x86 x86_64"
if [ $effectiveTargetArchitecture != x86_gcc2 ]; then if [ $effectiveTargetArchitecture != x86_gcc2 ]; then
# x86_gcc2 is fine as primary target architecture as long as we're building # x86_gcc2 is fine as primary target architecture as long as we're building
@@ -98,11 +98,11 @@ INSTALL()
# swpipe renderer package # swpipe renderer package
packageEntries swpipe \ packageEntries swpipe \
"$addOnsDir/opengl/*Pipe" "$addOnsDir/opengl/Software Pipe"
# swrast renderer package # swrast renderer package
packageEntries swrast \ packageEntries swrast \
"$addOnsDir/opengl/*Rasterizer" "$addOnsDir/opengl/Software Rasterizer"
} }
# ----- devel package ------------------------------------------------------- # ----- 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> From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Mon, 30 Dec 2013 23:49:06 -0600 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 diff --git a/src/gallium/targets/haiku-softpipe/SConscript b/src/gallium/targets/haiku-softpipe/SConscript
index 40bf03c..16ce7cd 100644 index 40bf03c..16ce7cd 100644
@@ -48,10 +43,11 @@ index 71ce88e..ca0423e 100644
-- --
1.8.3.4 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> From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Tue, 31 Dec 2013 15:39:49 -0600 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 * The Haiku renderers need to link to libGL to function properly
in all usage contexts. As mesa drivers build before gallium 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 * This is likely better as it mimics how glx is laid out ensuring
the Haiku libGL is better understood. the Haiku libGL is better understood.
* All renderers properly link in libGL now. * 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 diff --git a/src/SConscript b/src/SConscript
index 1465918..a24acea 100644 index 1465918..a24acea 100644
@@ -112,7 +74,7 @@ index 1465918..a24acea 100644
SConscript('mapi/vgapi/SConscript') SConscript('mapi/vgapi/SConscript')
diff --git a/src/gallium/SConscript b/src/gallium/SConscript diff --git a/src/gallium/SConscript b/src/gallium/SConscript
index 6e27be2..32bbdbe 100644 index c68519d..7ba8070 100644
--- a/src/gallium/SConscript --- a/src/gallium/SConscript
+++ b/src/gallium/SConscript +++ b/src/gallium/SConscript
@@ -119,7 +119,6 @@ if not env['embedded']: @@ -119,7 +119,6 @@ if not env['embedded']:
@@ -2717,16 +2679,14 @@ index ca0423e..aef7300 100644
-- --
1.8.3.4 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> From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Tue, 21 Jan 2014 18:40:22 +0000 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 * Our atomics were revamped to no longer require
volatile int pointers 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 diff --git a/include/HaikuGL/GLRenderer.h b/include/HaikuGL/GLRenderer.h
index 7ffcc34..02a438d 100644 index 7ffcc34..02a438d 100644
@@ -2744,3 +2704,67 @@ index 7ffcc34..02a438d 100644
-- --
1.8.3.4 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