[Bug 8868] Oblivion crashes outdoors when moving across load boundry

wine-bugs at winehq.org wine-bugs at winehq.org
Fri May 16 08:37:05 CDT 2008


http://bugs.winehq.org/show_bug.cgi?id=8868


Roman Nykyforchyn <loofsoft at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |loofsoft at gmail.com




--- Comment #12 from Roman Nykyforchyn <loofsoft at gmail.com>  2008-05-16 08:37:04 ---
Hi, I found the cause of this issue.

The problem is in wined3d library, in some case we get stack overflow by
calling ActivateContext (context.c) function recursively.

I've fixed this and the changes are:
1) in read_from_framebuffer_texture function (surface.c):

+ if(!device->isInDraw) 
   ActivateContext(device, (IWineD3DSurface *) This, CTXUSAGE_BLIT);

2) in FindContext function  (context.c):

   if (wined3d_settings.offscreen_rendering_mode != ORM_FBO) {
    /* Make sure we have a OpenGL texture name so the PreLoad() used to read
the buffer
     * back when we are done won't mark us dirty.
     */
+  BOOL oldInDraw = This->isInDraw;
+  This->isInDraw = TRUE;
   IWineD3DSurface_PreLoad(target);
+  This->isInDraw = oldInDraw;
  } 

Now I do not have any crashes with Oblivion, exterior scenes work fine with
pbuffer and backbuffer rendering. But I noticed, that sometimes one of the
frames in rendered upside down. This happens only on exterior scenes and on the
same places that were crashing without my fix.

Can somebody take care of this and fix pbuffer and backbuffer till 1.0 release?
This may be good improvement, as pbuffer and backbuffer rendering provides 1.5
times better performance in some games.


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list