notaz.gp2x.de
/
pcsx_rearmed.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0877957
)
gpu_unai: fix a few potential crashes
author
notaz
<notasas@gmail.com>
Wed, 26 Oct 2011 23:12:21 +0000
(
02:12
+0300)
committer
notaz
<notasas@gmail.com>
Sun, 30 Oct 2011 21:48:09 +0000
(23:48 +0200)
plugins/gpu_unai/gpu.cpp
patch
|
blob
|
blame
|
history
diff --git
a/plugins/gpu_unai/gpu.cpp
b/plugins/gpu_unai/gpu.cpp
index
a7cf495
..
f0539c0
100644
(file)
--- a/
plugins/gpu_unai/gpu.cpp
+++ b/
plugins/gpu_unai/gpu.cpp
@@
-274,8
+274,9
@@
void GPU_writeDataMem(u32* dmaAddress, s32 dmaCount)
{
if (FrameToWrite)
{
{
if (FrameToWrite)
{
- while (dmaCount
--)
+ while (dmaCount
)
{
{
+ dmaCount--;
data = *dmaAddress++;
if ((&pvram[px])>(VIDEO_END)) pvram-=512*1024;
pvram[px] = data;
data = *dmaAddress++;
if ((&pvram[px])>(VIDEO_END)) pvram-=512*1024;
pvram[px] = data;
@@
-830,14
+831,15
@@
static s16 old_res_horz, old_res_vert, old_rgb24;
static void blit(void)
{
static void blit(void)
{
+ u16 *base = (u16 *)GPU_FrameBuffer;
s16 isRGB24 = (GPU_GP1 & 0x00200000) ? 1 : 0;
s16 h0, x0, y0, w0, h1;
s16 isRGB24 = (GPU_GP1 & 0x00200000) ? 1 : 0;
s16 h0, x0, y0, w0, h1;
- u
16 *src
s;
+ u
32 fb_off
s;
u8 *dest;
x0 = DisplayArea[0] & ~1; // alignment needed by blitter
y0 = DisplayArea[1];
u8 *dest;
x0 = DisplayArea[0] & ~1; // alignment needed by blitter
y0 = DisplayArea[1];
-
srcs = &((u16*)GPU_FrameBuffer)[FRAME_OFFSET(x0,y0)]
;
+
fb_offs = FRAME_OFFSET(x0, y0)
;
w0 = DisplayArea[2];
h0 = DisplayArea[3]; // video mode
w0 = DisplayArea[2];
h0 = DisplayArea[3]; // video mode
@@
-860,22
+862,25
@@
static void blit(void)
if (isRGB24)
{
#ifndef MAEMO
if (isRGB24)
{
#ifndef MAEMO
- for (; h1-- > 0; dest += w0 * 3,
src
s += 1024)
+ for (; h1-- > 0; dest += w0 * 3,
fb_off
s += 1024)
{
{
- bgr888_to_rgb888(dest, srcs, w0 * 3);
+ fb_offs &= 1024*512-1;
+ bgr888_to_rgb888(dest, base + fb_offs, w0 * 3);
}
#else
}
#else
- for (; h1-- > 0; dest += w0 * 2,
src
s += 1024)
+ for (; h1-- > 0; dest += w0 * 2,
fb_off
s += 1024)
{
{
- bgr888_to_rgb565(dest, srcs, w0 * 3);
+ fb_offs &= 1024*512-1;
+ bgr888_to_rgb565(dest, base + fb_offs, w0 * 3);
}
#endif
}
else
{
}
#endif
}
else
{
- for (; h1-- > 0; dest += w0 * 2,
src
s += 1024)
+ for (; h1-- > 0; dest += w0 * 2,
fb_off
s += 1024)
{
{
- bgr555_to_rgb565(dest, srcs, w0 * 2);
+ fb_offs &= 1024*512-1;
+ bgr555_to_rgb565(dest, base + fb_offs, w0 * 2);
}
}
}
}