summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/wgl/shared/stw_device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/state_trackers/wgl/shared/stw_device.c')
-rw-r--r--src/gallium/state_trackers/wgl/shared/stw_device.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/gallium/state_trackers/wgl/shared/stw_device.c b/src/gallium/state_trackers/wgl/shared/stw_device.c
index 51936c2bdd..1a6b29807d 100644
--- a/src/gallium/state_trackers/wgl/shared/stw_device.c
+++ b/src/gallium/state_trackers/wgl/shared/stw_device.c
@@ -41,6 +41,7 @@
#include "shared/stw_pixelformat.h"
#include "shared/stw_public.h"
#include "shared/stw_tls.h"
+#include "shared/stw_framebuffer.h"
#ifdef WIN32_THREADS
extern _glthread_Mutex OneTimeLock;
@@ -56,7 +57,7 @@ struct stw_device *stw_dev = NULL;
* stw_winsys::flush_front_buffer.
*/
static void
-st_flush_frontbuffer(struct pipe_screen *screen,
+stw_flush_frontbuffer(struct pipe_screen *screen,
struct pipe_surface *surface,
void *context_private )
{
@@ -75,7 +76,7 @@ st_flush_frontbuffer(struct pipe_screen *screen,
boolean
-st_init(const struct stw_winsys *stw_winsys)
+stw_init(const struct stw_winsys *stw_winsys)
{
static struct stw_device stw_dev_storage;
struct pipe_screen *screen;
@@ -110,7 +111,7 @@ st_init(const struct stw_winsys *stw_winsys)
stw_dev->screen = screen;
#endif
- stw_dev->screen->flush_frontbuffer = st_flush_frontbuffer;
+ stw_dev->screen->flush_frontbuffer = &stw_flush_frontbuffer;
pipe_mutex_init( stw_dev->mutex );
@@ -119,7 +120,7 @@ st_init(const struct stw_winsys *stw_winsys)
goto error1;
}
- pixelformat_init();
+ stw_pixelformat_init();
return TRUE;
@@ -130,25 +131,28 @@ error1:
boolean
-st_init_thread(void)
+stw_init_thread(void)
{
- if (!stw_tls_init_thread()) {
+ if (!stw_tls_init_thread())
+ return FALSE;
+
+ if (!stw_framebuffer_init_thread())
return FALSE;
- }
return TRUE;
}
void
-st_cleanup_thread(void)
+stw_cleanup_thread(void)
{
+ stw_framebuffer_cleanup_thread();
stw_tls_cleanup_thread();
}
void
-st_cleanup(void)
+stw_cleanup(void)
{
unsigned i;
@@ -169,6 +173,8 @@ st_cleanup(void)
}
pipe_mutex_unlock( stw_dev->mutex );
+ stw_framebuffer_cleanup();
+
pipe_mutex_destroy( stw_dev->mutex );
stw_dev->screen->destroy(stw_dev->screen);
@@ -189,7 +195,7 @@ st_cleanup(void)
struct stw_context *
-stw_lookup_context( UINT_PTR dhglrc )
+stw_lookup_context_locked( UINT_PTR dhglrc )
{
if (dhglrc == 0)
return NULL;