diff options
author | Jaroslav Hensl <jara@hensl.cz> | 2024-02-25 23:54:01 +0100 |
---|---|---|
committer | Jaroslav Hensl <jara@hensl.cz> | 2024-02-25 23:54:01 +0100 |
commit | 253cd05e58298800ea0038868203defd9b64a374 (patch) | |
tree | 1fbaa892e8fe7483d1f2dd372a51b3bad1b2bbf5 /vxd_main.c | |
parent | 1725ae3a841d51e8fda682ad8a8265cc760e1e16 (diff) | |
download | vmdisp9x-253cd05e58298800ea0038868203defd9b64a374.tar.gz |
redone surface memory limitation
Diffstat (limited to 'vxd_main.c')
-rw-r--r-- | vxd_main.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -409,6 +409,8 @@ void __declspec(naked) VXD_API_entry() {
_asm {
push ebp
+ mov eax,cr3 ; TLB bug here? Looks like...
+ mov cr3,eax
call VXD_API_Proc
mov [ebp+1Ch], ax
retn
@@ -529,7 +531,12 @@ DWORD __stdcall Device_IO_Control_proc(struct DIOCParams *params) {
memcpy(outio, inio, sizeof(SVGA_region_info_t));
}
- SVGA_region_create(outio);
+ outio->address = NULL;
+ if(!SVGA_region_create(outio))
+ {
+ SVGA_flushcache();
+ SVGA_region_create(outio);
+ }
return 0;
}
case OP_SVGA_REGION_FREE:
|