blob: 37eb1eb3ff4245fdbbe70cc40f14b8c5c2a30350 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
$NetBSD: patch-window_picture.cc,v 1.1 2020/01/03 02:35:51 tsutsui Exp $
- avoid unaligned copy for RISC cpus
--- window/picture.cc.orig 2008-01-06 05:17:14.000000000 +0000
+++ window/picture.cc
@@ -370,7 +370,7 @@ err_ret:
char* s = (char*)((SDL_Surface*)surface_own)->pixels + ((SDL_Surface*)surface_own)->pitch*i;
int bpp = ((SDL_Surface*)surface_own)->format->BytesPerPixel;
for (j=0; j<w; j++) {
- if ( ((*(int*)s) & 0xffffff) == 0) *a = 0;
+ if ( (read_little_endian_int(s) & 0xffffff) == 0) *a = 0;
else if (*a == 0) *a = 0xff;
s += bpp; a++;
}
@@ -730,10 +730,10 @@ inline Surface* FileToSurface::LoadSurfa
MaskType is_mask = conv->IsMask() ? ALPHA_MASK : NO_MASK;
if (is_mask == ALPHA_MASK) { // alpha �����٤� 0xff �ʤ�ޥ���̵���Ȥ���
int len = conv->Width()*conv->Height();
- unsigned int* d = (unsigned int*)mem;
+ char* d = mem;
int i; for (i=0; i<len; i++) {
- if ( (*d&0xff000000) != 0xff000000) break;
- d++;
+ if ( (read_little_endian_int(d)&0xff000000) != 0xff000000) break;
+ d += 4;
}
if (i == len) {
is_mask = NO_MASK;
|