[Wine-devel] bugs 954. Исправление поведения компаса при 3D
Иван Синицын
=?iso-8859-1?q?ivan_=CE=C1_etersoft=2Eru?=
Чт Авг 21 12:34:23 MSD 2008
Этот патч исправляет проблему с отрисовкой 3D графики в Компас.
должен быть принят, вместе с патчем Игоря (Понедельник 13:57:12), который
отменяет предыдущие изменения.
--
С уважением,
Синицын Иван
----------- следующая часть -----------
From afcb9f1d9f35ded8448ee93b7a0d9be6c4f27b3a Mon Sep 17 00:00:00 2001
From: Ivan Sinitsin <ivan на etersoft.ru>
Date: Thu, 21 Aug 2008 11:13:23 +0400
Subject: [PATCH] winex11.drv:opengl.c:fix bug 954. make right drawing mode? when swapbuffers, and delete render when call glFinish.
---
dlls/winex11.drv/opengl.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
index a68591d..d38676f 100644
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -2091,6 +2091,7 @@ static void WINAPI X11DRV_wglGetIntegerv(GLenum pname, GLint* params)
void flush_gl_drawable(X11DRV_PDEVICE *physDev)
{
int w, h;
+ XGCValues gcvalues;
if (!physDev->gl_copy)
return;
@@ -2106,8 +2107,15 @@ void flush_gl_drawable(X11DRV_PDEVICE *physDev)
* flush the display make sure we copy up-to-date data */
wine_tsx11_lock();
XFlush(gdi_display);
+ /*Render GL always in GXcopy mode*/
+ XGetGCValues(gdi_display, physDev->gc, GCFunction, &gcvalues);
+ XSetFunction(gdi_display, physDev->gc, GXcopy);
+
XCopyArea(gdi_display, src, physDev->drawable, physDev->gc, 0, 0, w, h,
physDev->dc_rect.left, physDev->dc_rect.top);
+ /*return old mode*/
+ XSetFunction(gdi_display, physDev->gc, gcvalues.function);
+
wine_tsx11_unlock();
}
}
@@ -2116,13 +2124,11 @@ void flush_gl_drawable(X11DRV_PDEVICE *physDev)
static void WINAPI X11DRV_wglFinish(void)
{
Wine_GLContext *ctx = NtCurrentTeb()->glContext;
- enum x11drv_escape_codes code = X11DRV_FLUSH_GL_DRAWABLE;
wine_tsx11_lock();
sync_context(ctx);
pglFinish();
wine_tsx11_unlock();
- if (ctx) ExtEscape(ctx->hdc, X11DRV_ESCAPE, sizeof(code), (LPSTR)&code, 0, NULL );
}
static void WINAPI X11DRV_wglFlush(void)
--
1.5.4.5.GIT
Подробная информация о списке рассылки Wine-devel