--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403645
This commit is contained in:
Sam Lantinga 2009-06-10 13:34:20 +00:00
parent e74bc6f89f
commit d03a7700eb
18 changed files with 616 additions and 704 deletions

View file

@ -46,23 +46,16 @@ extern "C" {
static __inline__ void static __inline__ void
SDL_atomic_int_add(volatile int *atomic, int value) SDL_atomic_int_add(volatile int *atomic, int value)
{ {
__asm__ __volatile__("lock;" __asm__ __volatile__("lock;" "addl %1, %0":"=m"(*atomic)
"addl %1, %0" :"ir"(value), "m"(*atomic));
: "=m" (*atomic)
: "ir" (value),
"m" (*atomic));
} }
static __inline__ int static __inline__ int
SDL_atomic_int_xchg_add(volatile int *atomic, int value) SDL_atomic_int_xchg_add(volatile int *atomic, int value)
{ {
int rv; int rv;
__asm__ __volatile__("lock;" __asm__ __volatile__("lock;" "xaddl %0, %1":"=r"(rv), "=m"(*atomic)
"xaddl %0, %1" :"0"(value), "m"(*atomic));
: "=r" (rv),
"=m" (*atomic)
: "0" (value),
"m" (*atomic));
return rv; return rv;
} }
@ -70,18 +63,14 @@ static __inline__ SDL_bool
SDL_atomic_int_cmp_xchg(volatile int *atomic, int oldvalue, int newvalue) SDL_atomic_int_cmp_xchg(volatile int *atomic, int oldvalue, int newvalue)
{ {
int rv; int rv;
__asm__ __volatile__("lock;" __asm__ __volatile__("lock;" "cmpxchgl %2, %1":"=a"(rv), "=m"(*atomic)
"cmpxchgl %2, %1" :"r"(newvalue), "m"(*atomic), "0"(oldvalue));
: "=a" (rv),
"=m" (*atomic)
: "r" (newvalue),
"m" (*atomic),
"0" (oldvalue));
return (SDL_bool) (rv == oldvalue); return (SDL_bool) (rv == oldvalue);
} }
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
void *rv; void *rv;
__asm__ __volatile__("lock;" __asm__ __volatile__("lock;"
@ -90,11 +79,8 @@ SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue)
# else # else
"cmpxchgl %2, %1" "cmpxchgl %2, %1"
# endif # endif
: "=a" (rv), :"=a"(rv), "=m"(*atomic)
"=m" (*atomic) :"r"(newvalue), "m"(*atomic), "0"(oldvalue));
: "r" (newvalue),
"m" (*atomic),
"0" (oldvalue));
return (SDL_bool) (rv == oldvalue); return (SDL_bool) (rv == oldvalue);
} }
#elif defined(__GNUC__) && defined(__alpha__) #elif defined(__GNUC__) && defined(__alpha__)
@ -122,7 +108,8 @@ SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue)
# if (SIZEOF_VOIDP == 4) # if (SIZEOF_VOIDP == 4)
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
int rv; int rv;
void *prev; void *prev;
@ -133,19 +120,15 @@ SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue)
" mov %4,%1\n" " mov %4,%1\n"
" stl_c %1,%2\n" " stl_c %1,%2\n"
" beq %1,1b\n" " beq %1,1b\n"
" mb\n" " mb\n" "2:":"=&r"(prev), "=&r"(rv)
"2:" :"m"(*atomic), "Ir"(oldvalue), "Ir"(newvalue)
: "=&r" (prev),
"=&r" (rv)
: "m" (*atomic),
"Ir" (oldvalue),
"Ir" (newvalue)
:"memory"); :"memory");
return (SDL_bool) (rv != 0); return (SDL_bool) (rv != 0);
} }
# elif (SIZEOF_VOIDP == 8) # elif (SIZEOF_VOIDP == 8)
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
int rv; int rv;
void *prev; void *prev;
@ -156,13 +139,8 @@ SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue)
" mov %4,%1\n" " mov %4,%1\n"
" stq_c %1,%2\n" " stq_c %1,%2\n"
" beq %1,1b\n" " beq %1,1b\n"
" mb\n" " mb\n" "2:":"=&r"(prev), "=&r"(rv)
"2:" :"m"(*atomic), "Ir"(oldvalue), "Ir"(newvalue)
: "=&r" (prev),
"=&r" (rv)
: "m" (*atomic),
"Ir" (oldvalue),
"Ir" (newvalue)
:"memory"); :"memory");
return (SDL_bool) (rv != 0); return (SDL_bool) (rv != 0);
} }
@ -185,31 +163,24 @@ SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue)
# if (SIZEOF_VOIDP == 4) # if (SIZEOF_VOIDP == 4)
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
void *rv; void *rv;
__asm__ __volatile__("cas [%4], %2, %0" __asm__ __volatile__("cas [%4], %2, %0":"=r"(rv), "=m"(*atomic)
: "=r" (rv),
"=m" (*atomic)
:"r"(oldvalue), :"r"(oldvalue),
"m" (*atomic), "m"(*atomic), "r"(atomic), "0"(newvalue));
"r" (atomic),
"0" (newvalue));
return (SDL_bool) (rv == oldvalue); return (SDL_bool) (rv == oldvalue);
} }
# elif (SIZEOF_VOIDP == 8) # elif (SIZEOF_VOIDP == 8)
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
void *rv; void *rv;
void **a = atomic; void **a = atomic;
__asm__ __volatile__("casx [%4], %2, %0" __asm__ __volatile__("casx [%4], %2, %0":"=r"(rv), "=m"(*a)
: "=r" (rv), :"r"(oldvalue), "m"(*a), "r"(a), "0"(newvalue));
"=m" (*a)
: "r" (oldvalue),
"m" (*a),
"r" (a),
"0" (newvalue));
return (SDL_bool) (rv == oldvalue); return (SDL_bool) (rv == oldvalue);
} }
# else # else
@ -225,15 +196,9 @@ SDL_atomic_int_add(volatile int* atomic, int value)
__asm__ __volatile__("1: lwarx %0, 0, %3\n" __asm__ __volatile__("1: lwarx %0, 0, %3\n"
" add %1, %0, %4\n" " add %1, %0, %4\n"
" stwcx. %1, 0, %3\n" " stwcx. %1, 0, %3\n"
" bne- 1b" " bne- 1b":"=&b"(rv), "=&r"(tmp), "=m"(*atomic)
: "=&b" (rv), :"b"(atomic), "r"(value), "m"(*atomic)
"=&r" (tmp), :"cr0", "memory");
"=m" (*atomic)
: "b" (atomic),
"r" (value),
"m" (*atomic)
: "cr0",
"memory");
} }
static __inline__ int static __inline__ int
@ -243,15 +208,9 @@ SDL_atomic_int_xchg_add(volatile int* atomic, int value)
__asm__ __volatile__("1: lwarx %0, 0, %3\n" __asm__ __volatile__("1: lwarx %0, 0, %3\n"
" add %1, %0, %4\n" " add %1, %0, %4\n"
" stwcx. %1, 0, %3\n" " stwcx. %1, 0, %3\n"
" bne- 1b" " bne- 1b":"=&b"(rv), "=&r"(tmp), "=m"(*atomic)
: "=&b" (rv), :"b"(atomic), "r"(value), "m"(*atomic)
"=&r" (tmp), :"cr0", "memory");
"=m" (*atomic)
: "b" (atomic),
"r" (value),
"m" (*atomic)
: "cr0",
"memory");
return rv; return rv;
} }
@ -265,19 +224,14 @@ SDL_atomic_int_cmp_xchg(volatile int* atomic, int oldvalue, int newvalue)
" subf. %0, %2, %0\n" " subf. %0, %2, %0\n"
" bne 2f\n" " bne 2f\n"
" stwcx. %3, 0, %1\n" " stwcx. %3, 0, %1\n"
" bne- 1b\n" " bne- 1b\n" "2: isync":"=&r"(rv)
"2: isync" :"b"(atomic), "r"(oldvalue), "r":"cr0", "memory");
: "=&r" (rv)
: "b" (atomic),
"r" (oldvalue),
"r"
: "cr0",
"memory");
return (SDL_bool) (rv == 0); return (SDL_bool) (rv == 0);
} }
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
void *rv; void *rv;
__asm__ __volatile__("sync\n" __asm__ __volatile__("sync\n"
@ -285,14 +239,9 @@ SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue)
" subf. %0, %2, %0\n" " subf. %0, %2, %0\n"
" bne 2f\n" " bne 2f\n"
" stwcx. %3, 0, %1\n" " stwcx. %3, 0, %1\n"
" bne- 1b\n" " bne- 1b\n" "2: isync":"=&r"(rv)
"2: isync" :"b"(atomic), "r"(oldvalue), "r"(newvalue)
: "=&r" (rv) :"cr0", "memory");
: "b" (atomic),
"r" (oldvalue),
"r" (newvalue)
: "cr0",
"memory");
return (SDL_bool) (rv == 0); return (SDL_bool) (rv == 0);
} }
# elif (SIZEOF_VOIDP == 8) # elif (SIZEOF_VOIDP == 8)
@ -306,19 +255,14 @@ SDL_atomic_int_cmp_xchg(volatile int* atomic, int oldvalue, int newvalue)
" subf. %0, %2, %0\n" " subf. %0, %2, %0\n"
" bne 2f\n" " bne 2f\n"
" stwcx. %3, 0, %1\n" " stwcx. %3, 0, %1\n"
" bne- 1b\n" " bne- 1b\n" "2: isync":"=&r"(rv)
"2: isync" :"b"(atomic), "r"(oldvalue), "r":"cr0", "memory");
: "=&r" (rv)
: "b" (atomic),
"r" (oldvalue),
"r"
: "cr0",
"memory");
return (SDL_bool) (rv == 0); return (SDL_bool) (rv == 0);
} }
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
void *rv; void *rv;
__asm__ __volatile__("sync\n" __asm__ __volatile__("sync\n"
@ -326,14 +270,9 @@ SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue)
" subf. %0, %2, %0\n" " subf. %0, %2, %0\n"
" bne 2f\n" " bne 2f\n"
" stdcx. %3, 0, %1\n" " stdcx. %3, 0, %1\n"
" bne- 1b\n" " bne- 1b\n" "2: isync":"=&r"(rv)
"2: isync" :"b"(atomic), "r"(oldvalue), "r"(newvalue)
: "=&r" (rv) :"cr0", "memory");
: "b" (atomic),
"r" (oldvalue),
"r" (newvalue)
: "cr0",
"memory");
return (SDL_bool) (rv == 0); return (SDL_bool) (rv == 0);
} }
# else # else
@ -361,12 +300,9 @@ SDL_atomic_int_xchg_add(volatile int* atomic, int value)
"addu %1,%4,%0 \n" "addu %1,%4,%0 \n"
"sc %1,%2 \n" "sc %1,%2 \n"
".set pop \n" ".set pop \n"
"beqz %1,1b \n" "beqz %1,1b \n":"=&r"(rv),
: "=&r" (rv), "=&r"(tmp), "=m"(*atomic)
"=&r" (tmp), :"m"(*atomic), "r"(value)
"=m" (*atomic)
: "m" (*atomic),
"r" (value)
:"memory"); :"memory");
return rv; return rv;
} }
@ -382,11 +318,8 @@ SDL_atomic_int_add(volatile int* atomic, int value)
"addu %0,%3,%0 \n" "addu %0,%3,%0 \n"
"sc %0,%1 \n" "sc %0,%1 \n"
".set pop \n" ".set pop \n"
"beqz %0,1b \n" "beqz %0,1b \n":"=&r"(rv), "=m"(*atomic)
: "=&r" (rv), :"m"(*atomic), "r"(value)
"=m" (*atomic)
: "m" (*atomic),
"r" (value)
:"memory"); :"memory");
} }
@ -406,30 +339,25 @@ SDL_atomic_int_cmp_xchg(volatile int* atomic, int oldvalue, int newvalue)
" beqz $1, 1b \n" " beqz $1, 1b \n"
" sync \n" " sync \n"
"2: \n" "2: \n"
" .set pop \n" " .set pop \n":"=&r"(rv), "=R"(*atomic)
: "=&r" (rv), :"R"(*atomic), "Jr"(oldvalue), "Jr"(newvalue)
"=R" (*atomic)
: "R" (*atomic),
"Jr" (oldvalue),
"Jr" (newvalue)
:"memory"); :"memory");
return (SDL_bool) rv; return (SDL_bool) rv;
} }
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
int rv; int rv;
__asm__ __volatile__(" .set push \n" __asm__ __volatile__(" .set push \n"
" .set noat \n" " .set noat \n" " .set mips3 \n"
" .set mips3 \n"
# if defined(__mips64) # if defined(__mips64)
"1: lld %0, %2 \n" "1: lld %0, %2 \n"
# else # else
"1: ll %0, %2 \n" "1: ll %0, %2 \n"
# endif # endif
" bne %0, %z3, 2f \n" " bne %0, %z3, 2f \n" " move $1, %z4 \n"
" move $1, %z4 \n"
# if defined(__mips64) # if defined(__mips64)
" sc $1, %1 \n" " sc $1, %1 \n"
# else # else
@ -438,12 +366,8 @@ SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue)
" beqz $1, 1b \n" " beqz $1, 1b \n"
" sync \n" " sync \n"
"2: \n" "2: \n"
" .set pop \n" " .set pop \n":"=&r"(rv), "=R"(*atomic)
: "=&r" (rv), :"R"(*atomic), "Jr"(oldvalue), "Jr"(newvalue)
"=R" (*atomic)
: "R" (*atomic),
"Jr" (oldvalue),
"Jr" (newvalue)
:"memory"); :"memory");
return (SDL_bool) rv; return (SDL_bool) rv;
} }
@ -456,12 +380,8 @@ SDL_atomic_int_xchg_add(volatile int* atomic, int value)
__asm__ __volatile__("1: move%.l %0,%1 \n" __asm__ __volatile__("1: move%.l %0,%1 \n"
" add%.l %2,%1 \n" " add%.l %2,%1 \n"
" cas%.l %0,%1,%3 \n" " cas%.l %0,%1,%3 \n"
" jbne 1b \n" " jbne 1b \n":"=d"(rv), "=&d"(tmp)
: "=d" (rv), :"d"(value), "m"(*atomic), "0"(rv)
"=&d" (tmp)
: "d" (value),
"m" (*atomic),
"0" (rv)
:"memory"); :"memory");
return (SDL_bool) rv; return (SDL_bool) rv;
} }
@ -469,10 +389,7 @@ SDL_atomic_int_xchg_add(volatile int* atomic, int value)
static __inline__ void static __inline__ void
SDL_atomic_int_add(volatile int *atomic, int value) SDL_atomic_int_add(volatile int *atomic, int value)
{ {
__asm__ __volatile__("add%.l %0,%1" __asm__ __volatile__("add%.l %0,%1"::"id"(value), "m"(*atomic)
:
: "id" (value),
"m" (*atomic)
:"memory"); :"memory");
} }
@ -482,29 +399,20 @@ SDL_atomic_int_cmp_xchg(volatile int* atomic, int oldvalue, int newvalue)
char rv; char rv;
int readvalue; int readvalue;
__asm__ __volatile__("cas%.l %2,%3,%1\n" __asm__ __volatile__("cas%.l %2,%3,%1\n"
"seq %0" "seq %0":"=dm"(rv), "=m"(*atomic), "=d"(readvalue)
: "=dm" (rv), :"d"(newvalue), "m"(*atomic), "2"(oldvalue));
"=m" (*atomic),
"=d" (readvalue)
: "d" (newvalue),
"m" (*atomic),
"2" (oldvalue));
return (SDL_bool) rv; return (SDL_bool) rv;
} }
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
char rv; char rv;
int readvalue; int readvalue;
__asm__ __volatile__("cas%.l %2,%3,%1\n" __asm__ __volatile__("cas%.l %2,%3,%1\n"
"seq %0" "seq %0":"=dm"(rv), "=m"(*atomic), "=d"(readvalue)
: "=dm" (rv), :"d"(newvalue), "m"(*atomic), "2"(oldvalue));
"=m" (*atomic),
"=d" (readvalue)
: "d" (newvalue),
"m" (*atomic),
"2" (oldvalue));
return (SDL_bool) rv; return (SDL_bool) rv;
} }
#elif defined(__GNUC__) && defined(__s390__) #elif defined(__GNUC__) && defined(__s390__)
@ -521,28 +429,24 @@ SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue)
}) })
# if (SIZEOF_VOIDP == 4) # if (SIZEOF_VOIDP == 4)
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
void *rv = oldvalue; void *rv = oldvalue;
__asm__ __volatile__("cs %0, %2, %1" __asm__ __volatile__("cs %0, %2, %1":"+d"(rv), "=Q"(*atomic)
: "+d" (rv), :"d"(newvalue), "m"(*atomic)
"=Q" (*atomic)
: "d" (newvalue),
"m" (*atomic)
:"cc"); :"cc");
return (SDL_bool) (rv == oldvalue); return (SDL_bool) (rv == oldvalue);
} }
# elif (SIZEOF_VOIDP == 8) # elif (SIZEOF_VOIDP == 8)
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
void *rv = oldvalue; void *rv = oldvalue;
void **a = atomic; void **a = atomic;
__asm__ __volatile__("csg %0, %2, %1" __asm__ __volatile__("csg %0, %2, %1":"+d"(rv), "=Q"(*a)
: "+d" (rv), :"d"((long) (newvalue)), "m"(*a)
"=Q" (*a)
: "d" ((long)(newvalue)),
"m" (*a)
:"cc"); :"cc");
return (SDL_bool) (rv == oldvalue); return (SDL_bool) (rv == oldvalue);
} }
@ -569,14 +473,17 @@ SDL_atmoic_int_cmp_xchg(volatile int* atomic, int oldvalue, int newvalue)
{ {
return (SDL_bool) (InterlockedCompareExchangePointer((PVOID *) atomic, return (SDL_bool) (InterlockedCompareExchangePointer((PVOID *) atomic,
(PVOID) newvalue, (PVOID) newvalue,
(PVOID)oldvalue) == oldvalue); (PVOID) oldvalue) ==
oldvalue);
} }
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
return (InterlockedCompareExchangePointer(atomic, newvalue, oldvalue) == oldvalue); return (InterlockedCompareExchangePointer(atomic, newvalue, oldvalue) ==
oldvalue);
} }
# else /* WINVER <= 0x0400 */ # else /* WINVER <= 0x0400 */
# if (SIZEOF_VOIDP != 4) # if (SIZEOF_VOIDP != 4)
@ -586,13 +493,16 @@ SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue)
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_int_cmp_xchg(volatile int *atomic, int oldvalue, int newvalue) SDL_atomic_int_cmp_xchg(volatile int *atomic, int oldvalue, int newvalue)
{ {
return (InterlockedCompareExchange(atomic, newvalue, oldvalue) == oldvalue); return (InterlockedCompareExchange(atomic, newvalue, oldvalue) ==
oldvalue);
} }
static __inline__ SDL_bool static __inline__ SDL_bool
SDL_atomic_ptr_cmp_xchg(volatile void** atomic, void* oldvalue, void* newvalue) SDL_atomic_ptr_cmp_xchg(volatile void **atomic, void *oldvalue,
void *newvalue)
{ {
return (InterlockedCompareExchange(atomic, newvalue, oldvalue) == oldvalue); return (InterlockedCompareExchange(atomic, newvalue, oldvalue) ==
oldvalue);
} }
# endif # endif
#else /* when all else fails */ #else /* when all else fails */

View file

@ -369,6 +369,7 @@ SDL_SendProximity(int id, int x, int y, int type)
event.proximity.y = y; event.proximity.y = y;
event.proximity.cursor = mouse->current_end; event.proximity.cursor = mouse->current_end;
event.proximity.type = type; event.proximity.type = type;
event.proximity.windowID = mouse->focus;
posted = (SDL_PushEvent(&event) > 0); posted = (SDL_PushEvent(&event) > 0);
if (type == SDL_PROXIMITYIN) { if (type == SDL_PROXIMITYIN) {
mouse->proximity = SDL_TRUE; mouse->proximity = SDL_TRUE;

View file

@ -27,7 +27,8 @@
* SDL_FALSE to try next implementation. * SDL_FALSE to try next implementation.
*/ */
typedef SDL_bool typedef SDL_bool
(*SDL_GetPowerInfo_Impl)(SDL_PowerState *state, int *seconds, int *percent); (*SDL_GetPowerInfo_Impl) (SDL_PowerState * state, int *seconds,
int *percent);
SDL_bool SDL_GetPowerInfo_Linux_sys_power(SDL_PowerState *, int *, int *); SDL_bool SDL_GetPowerInfo_Linux_sys_power(SDL_PowerState *, int *, int *);
SDL_bool SDL_GetPowerInfo_Linux_proc_acpi(SDL_PowerState *, int *, int *); SDL_bool SDL_GetPowerInfo_Linux_proc_acpi(SDL_PowerState *, int *, int *);
@ -111,4 +112,3 @@ SDL_GetPowerInfo(int *seconds, int *percent)
} }
/* vi: set ts=4 sw=4 expandtab: */ /* vi: set ts=4 sw=4 expandtab: */

View file

@ -123,4 +123,3 @@ SDL_GetPowerInfo_BeOS(SDL_PowerState *state, int *seconds, int *percent)
#endif /* SDL_POWER_DISABLED */ #endif /* SDL_POWER_DISABLED */
/* vi: set ts=4 sw=4 expandtab: */ /* vi: set ts=4 sw=4 expandtab: */

View file

@ -208,4 +208,3 @@ SDL_GetPowerInfo_Linux_proc_apm(SDL_PowerState *state,
#endif /* SDL_POWER_DISABLED */ #endif /* SDL_POWER_DISABLED */
/* vi: set ts=4 sw=4 expandtab: */ /* vi: set ts=4 sw=4 expandtab: */

View file

@ -161,7 +161,8 @@ SDL_GetPowerInfo_MacOSX(SDL_PowerState *state, int *seconds, int *percent)
CFIndex i; CFIndex i;
for (i = 0; i < total; i++) { for (i = 0; i < total; i++) {
CFTypeRef ps = (CFTypeRef) CFArrayGetValueAtIndex(list, i); CFTypeRef ps = (CFTypeRef) CFArrayGetValueAtIndex(list, i);
CFDictionaryRef dict = IOPSGetPowerSourceDescription(blob, ps); CFDictionaryRef dict =
IOPSGetPowerSourceDescription(blob, ps);
if (dict != NULL) { if (dict != NULL) {
checkps(dict, &have_ac, &have_battery, &charging, checkps(dict, &have_ac, &have_battery, &charging,
seconds, percent); seconds, percent);
@ -190,4 +191,3 @@ SDL_GetPowerInfo_MacOSX(SDL_PowerState *state, int *seconds, int *percent)
#endif /* SDL_POWER_DISABLED */ #endif /* SDL_POWER_DISABLED */
/* vi: set ts=4 sw=4 expandtab: */ /* vi: set ts=4 sw=4 expandtab: */

View file

@ -27,7 +27,8 @@
#include "SDL_power.h" #include "SDL_power.h"
SDL_bool SDL_bool
SDL_GetPowerInfo_NintendoDS(SDL_PowerState *state, int *seconds, int *percent) SDL_GetPowerInfo_NintendoDS(SDL_PowerState * state, int *seconds,
int *percent)
{ {
/* !!! FIXME: write me. */ /* !!! FIXME: write me. */
@ -42,4 +43,3 @@ SDL_GetPowerInfo_NintendoDS(SDL_PowerState *state, int *seconds, int *percent)
#endif /* SDL_POWER_DISABLED */ #endif /* SDL_POWER_DISABLED */
/* vi: set ts=4 sw=4 expandtab: */ /* vi: set ts=4 sw=4 expandtab: */

View file

@ -38,7 +38,8 @@
#include "SDL_power.h" #include "SDL_power.h"
typedef struct { typedef struct
{
USHORT len; USHORT len;
USHORT flags; USHORT flags;
UCHAR ac_status; UCHAR ac_status;
@ -132,4 +133,3 @@ SDL_GetPowerInfo_OS2(SDL_PowerState *state, int *seconds, int *percent)
#endif /* SDL_POWER_DISABLED */ #endif /* SDL_POWER_DISABLED */
/* vi: set ts=4 sw=4 expandtab: */ /* vi: set ts=4 sw=4 expandtab: */

View file

@ -75,4 +75,3 @@ SDL_GetPowerInfo_Windows(SDL_PowerState *state, int *seconds, int *percent)
#endif /* SDL_POWER_DISABLED */ #endif /* SDL_POWER_DISABLED */
/* vi: set ts=4 sw=4 expandtab: */ /* vi: set ts=4 sw=4 expandtab: */

View file

@ -1659,7 +1659,8 @@ SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface)
SDL_PIXELFORMAT_RGB332, SDL_PIXELFORMAT_RGB332,
SDL_PIXELFORMAT_INDEX1LSB, SDL_PIXELFORMAT_INDEX1LSB,
SDL_PIXELFORMAT_INDEX1MSB, SDL_PIXELFORMAT_INDEX1MSB,
SDL_PIXELFORMAT_UNKNOWN}; SDL_PIXELFORMAT_UNKNOWN
};
bpp = fmt->BitsPerPixel; bpp = fmt->BitsPerPixel;
Rmask = fmt->Rmask; Rmask = fmt->Rmask;
@ -1667,7 +1668,8 @@ SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface)
Bmask = fmt->Bmask; Bmask = fmt->Bmask;
Amask = fmt->Amask; Amask = fmt->Amask;
format = SDL_MasksToPixelFormatEnum(bpp, Rmask, Gmask, Bmask, Amask); format =
SDL_MasksToPixelFormatEnum(bpp, Rmask, Gmask, Bmask, Amask);
if (!format) { if (!format) {
SDL_SetError("Unknown pixel format"); SDL_SetError("Unknown pixel format");
return 0; return 0;
@ -1675,36 +1677,30 @@ SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface)
/* Search requested format in the supported texture */ /* Search requested format in the supported texture */
/* formats by current renderer */ /* formats by current renderer */
for (it=0; it<renderer->info.num_texture_formats; it++) for (it = 0; it < renderer->info.num_texture_formats; it++) {
{ if (renderer->info.texture_formats[it] == format) {
if (renderer->info.texture_formats[it]==format)
{
break; break;
} }
} }
/* If requested format can't be found, search any best */ /* If requested format can't be found, search any best */
/* format which renderer provides */ /* format which renderer provides */
if (it==renderer->info.num_texture_formats) if (it == renderer->info.num_texture_formats) {
{
pfmt = 0; pfmt = 0;
for (;;) for (;;) {
{ if (sdl_pformats[pfmt] == SDL_PIXELFORMAT_UNKNOWN) {
if (sdl_pformats[pfmt]==SDL_PIXELFORMAT_UNKNOWN)
{
break; break;
} }
for (it=0; it<renderer->info.num_texture_formats; it++) for (it = 0; it < renderer->info.num_texture_formats;
{ it++) {
if (renderer->info.texture_formats[it]==sdl_pformats[pfmt]) if (renderer->info.texture_formats[it] ==
{ sdl_pformats[pfmt]) {
break; break;
} }
} }
if (it!=renderer->info.num_texture_formats) if (it != renderer->info.num_texture_formats) {
{
/* The best format has been found */ /* The best format has been found */
break; break;
} }
@ -1712,16 +1708,16 @@ SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface)
} }
/* If any format can't be found, then return an error */ /* If any format can't be found, then return an error */
if (it==renderer->info.num_texture_formats) if (it == renderer->info.num_texture_formats) {
{ SDL_SetError
SDL_SetError("Any of the supported pixel formats can't be found"); ("Any of the supported pixel formats can't be found");
return 0; return 0;
} }
/* Convert found pixel format back to color masks */ /* Convert found pixel format back to color masks */
if (SDL_PixelFormatEnumToMasks(renderer->info.texture_formats[it], if (SDL_PixelFormatEnumToMasks
&bpp, &Rmask, &Gmask, &Bmask, &Amask)!=SDL_TRUE) (renderer->info.texture_formats[it], &bpp, &Rmask, &Gmask,
{ &Bmask, &Amask) != SDL_TRUE) {
SDL_SetError("Unknown pixel format"); SDL_SetError("Unknown pixel format");
return 0; return 0;
} }

View file

@ -406,8 +406,7 @@ photon_videoinit(_THIS)
/* Create offscreen context from video memory, which is currently */ /* Create offscreen context from video memory, which is currently */
/* displayed on the screen */ /* displayed on the screen */
curctx = PdCreateOffscreenContext(0, 0, 0, Pg_OSC_MAIN_DISPLAY); curctx = PdCreateOffscreenContext(0, 0, 0, Pg_OSC_MAIN_DISPLAY);
if (curctx==NULL) if (curctx == NULL) {
{
SDL_SetError("Photon: Can't get display area capabilities"); SDL_SetError("Photon: Can't get display area capabilities");
SDL_free(didata->cursor); SDL_free(didata->cursor);
SDL_free(didata); SDL_free(didata);
@ -420,7 +419,8 @@ photon_videoinit(_THIS)
/* Get current video mode details */ /* Get current video mode details */
status = PgGetVideoModeInfo(hwcaps.current_video_mode, &modeinfo); status = PgGetVideoModeInfo(hwcaps.current_video_mode, &modeinfo);
if (status != 0) { if (status != 0) {
SDL_SetError("Photon: Can't get current video mode information"); SDL_SetError
("Photon: Can't get current video mode information");
SDL_free(didata->cursor); SDL_free(didata->cursor);
SDL_free(didata); SDL_free(didata);
return -1; return -1;

View file

@ -690,7 +690,8 @@ qnxgf_getdisplaymodes(_THIS)
SDL_AddDisplayMode(_this->current_display, &mode); SDL_AddDisplayMode(_this->current_display, &mode);
} }
/* If mode is RGBA1555, add the same mode as RGBx555 */ /* If mode is RGBA1555, add the same mode as RGBx555 */
if (modeinfo.primary_format==GF_FORMAT_PACK_ARGB1555) { if (modeinfo.primary_format ==
GF_FORMAT_PACK_ARGB1555) {
mode.w = modeinfo.xres; mode.w = modeinfo.xres;
mode.h = modeinfo.yres; mode.h = modeinfo.yres;
mode.refresh_rate = modeinfo.refresh[jt]; mode.refresh_rate = modeinfo.refresh[jt];
@ -1573,8 +1574,7 @@ qnxgf_gl_createcontext(_THIS, SDL_Window * window)
/* No available configs */ /* No available configs */
if (configs == 0) { if (configs == 0) {
SDL_SetError SDL_SetError("GF: Can't find any configuration for OpenGL ES");
("GF: Can't find any configuration for OpenGL ES");
return NULL; return NULL;
} }
} }

View file

@ -339,6 +339,7 @@ X11_DispatchEvent(_THIS)
if (xevent.type == data->proximity_in) { if (xevent.type == data->proximity_in) {
XProximityNotifyEvent *proximity = XProximityNotifyEvent *proximity =
(XProximityNotifyEvent *) & xevent; (XProximityNotifyEvent *) & xevent;
SDL_SetMouseFocus(proximity->deviceid, data->windowID);
SDL_SendProximity(proximity->deviceid, proximity->x, SDL_SendProximity(proximity->deviceid, proximity->x,
proximity->y, SDL_PROXIMITYIN); proximity->y, SDL_PROXIMITYIN);
return; return;
@ -346,6 +347,7 @@ X11_DispatchEvent(_THIS)
if (xevent.type == data->proximity_out) { if (xevent.type == data->proximity_out) {
XProximityNotifyEvent *proximity = XProximityNotifyEvent *proximity =
(XProximityNotifyEvent *) & xevent; (XProximityNotifyEvent *) & xevent;
SDL_SetMouseFocus(proximity->deviceid, data->windowID);
SDL_SendProximity(proximity->deviceid, proximity->x, SDL_SendProximity(proximity->deviceid, proximity->x,
proximity->y, SDL_PROXIMITYOUT); proximity->y, SDL_PROXIMITYOUT);
return; return;

View file

@ -11,42 +11,45 @@
#define AUDIO_USAGE \ #define AUDIO_USAGE \
"[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]" "[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]"
struct pformat { struct pformat
{
Uint32 id; Uint32 id;
const char *idstr; const char *idstr;
} pixel_format[] = { } pixel_format[] = {
{SDL_PIXELFORMAT_INDEX1LSB, "SDL_PIXELFORMAT_INDEX1LSB"}, {
{SDL_PIXELFORMAT_INDEX1MSB, "SDL_PIXELFORMAT_INDEX1MSB"}, SDL_PIXELFORMAT_INDEX1LSB, "SDL_PIXELFORMAT_INDEX1LSB"}, {
{SDL_PIXELFORMAT_INDEX4LSB, "SDL_PIXELFORMAT_INDEX4LSB"}, SDL_PIXELFORMAT_INDEX1MSB, "SDL_PIXELFORMAT_INDEX1MSB"}, {
{SDL_PIXELFORMAT_INDEX4MSB, "SDL_PIXELFORMAT_INDEX4MSB"}, SDL_PIXELFORMAT_INDEX4LSB, "SDL_PIXELFORMAT_INDEX4LSB"}, {
{SDL_PIXELFORMAT_INDEX8, "SDL_PIXELFORMAT_INDEX8"}, SDL_PIXELFORMAT_INDEX4MSB, "SDL_PIXELFORMAT_INDEX4MSB"}, {
{SDL_PIXELFORMAT_RGB332, "SDL_PIXELFORMAT_RGB332"}, SDL_PIXELFORMAT_INDEX8, "SDL_PIXELFORMAT_INDEX8"}, {
{SDL_PIXELFORMAT_RGB444, "SDL_PIXELFORMAT_RGB444"}, SDL_PIXELFORMAT_RGB332, "SDL_PIXELFORMAT_RGB332"}, {
{SDL_PIXELFORMAT_RGB555, "SDL_PIXELFORMAT_RGB555"}, SDL_PIXELFORMAT_RGB444, "SDL_PIXELFORMAT_RGB444"}, {
{SDL_PIXELFORMAT_BGR555, "SDL_PIXELFORMAT_BGR555"}, SDL_PIXELFORMAT_RGB555, "SDL_PIXELFORMAT_RGB555"}, {
{SDL_PIXELFORMAT_ARGB4444, "SDL_PIXELFORMAT_ARGB4444"}, SDL_PIXELFORMAT_BGR555, "SDL_PIXELFORMAT_BGR555"}, {
{SDL_PIXELFORMAT_ABGR4444, "SDL_PIXELFORMAT_ABGR4444"}, SDL_PIXELFORMAT_ARGB4444, "SDL_PIXELFORMAT_ARGB4444"}, {
{SDL_PIXELFORMAT_ARGB1555, "SDL_PIXELFORMAT_ARGB1555"}, SDL_PIXELFORMAT_ABGR4444, "SDL_PIXELFORMAT_ABGR4444"}, {
{SDL_PIXELFORMAT_ABGR1555, "SDL_PIXELFORMAT_ABGR1555"}, SDL_PIXELFORMAT_ARGB1555, "SDL_PIXELFORMAT_ARGB1555"}, {
{SDL_PIXELFORMAT_RGB565, "SDL_PIXELFORMAT_RGB565"}, SDL_PIXELFORMAT_ABGR1555, "SDL_PIXELFORMAT_ABGR1555"}, {
{SDL_PIXELFORMAT_BGR565, "SDL_PIXELFORMAT_BGR565"}, SDL_PIXELFORMAT_RGB565, "SDL_PIXELFORMAT_RGB565"}, {
{SDL_PIXELFORMAT_RGB24, "SDL_PIXELFORMAT_RGB24"}, SDL_PIXELFORMAT_BGR565, "SDL_PIXELFORMAT_BGR565"}, {
{SDL_PIXELFORMAT_BGR24, "SDL_PIXELFORMAT_BGR24"}, SDL_PIXELFORMAT_RGB24, "SDL_PIXELFORMAT_RGB24"}, {
{SDL_PIXELFORMAT_RGB888, "SDL_PIXELFORMAT_RGB888"}, SDL_PIXELFORMAT_BGR24, "SDL_PIXELFORMAT_BGR24"}, {
{SDL_PIXELFORMAT_BGR888, "SDL_PIXELFORMAT_BGR888"}, SDL_PIXELFORMAT_RGB888, "SDL_PIXELFORMAT_RGB888"}, {
{SDL_PIXELFORMAT_ARGB8888, "SDL_PIXELFORMAT_ARGB8888"}, SDL_PIXELFORMAT_BGR888, "SDL_PIXELFORMAT_BGR888"}, {
{SDL_PIXELFORMAT_RGBA8888, "SDL_PIXELFORMAT_RGBA8888"}, SDL_PIXELFORMAT_ARGB8888, "SDL_PIXELFORMAT_ARGB8888"}, {
{SDL_PIXELFORMAT_ABGR8888, "SDL_PIXELFORMAT_ABGR8888"}, SDL_PIXELFORMAT_RGBA8888, "SDL_PIXELFORMAT_RGBA8888"}, {
{SDL_PIXELFORMAT_BGRA8888, "SDL_PIXELFORMAT_BGRA8888"}, SDL_PIXELFORMAT_ABGR8888, "SDL_PIXELFORMAT_ABGR8888"}, {
{SDL_PIXELFORMAT_ARGB2101010, "SDL_PIXELFORMAT_ARGB2101010"}, SDL_PIXELFORMAT_BGRA8888, "SDL_PIXELFORMAT_BGRA8888"}, {
{SDL_PIXELFORMAT_YV12, "SDL_PIXELFORMAT_YV12"}, SDL_PIXELFORMAT_ARGB2101010, "SDL_PIXELFORMAT_ARGB2101010"}, {
{SDL_PIXELFORMAT_IYUV, "SDL_PIXELFORMAT_IYUV"}, SDL_PIXELFORMAT_YV12, "SDL_PIXELFORMAT_YV12"}, {
{SDL_PIXELFORMAT_YUY2, "SDL_PIXELFORMAT_YUY2"}, SDL_PIXELFORMAT_IYUV, "SDL_PIXELFORMAT_IYUV"}, {
{SDL_PIXELFORMAT_UYVY, "SDL_PIXELFORMAT_UYVY"}, SDL_PIXELFORMAT_YUY2, "SDL_PIXELFORMAT_YUY2"}, {
{SDL_PIXELFORMAT_YVYU, "SDL_PIXELFORMAT_YVYU"} SDL_PIXELFORMAT_UYVY, "SDL_PIXELFORMAT_UYVY"}, {
SDL_PIXELFORMAT_YVYU, "SDL_PIXELFORMAT_YVYU"}
}; };
const char* PixelFormatToString(Uint32 pformat) const char *
PixelFormatToString(Uint32 pformat)
{ {
Uint32 it = 0; Uint32 it = 0;

View file

@ -3,15 +3,15 @@
#include <stdio.h> #include <stdio.h>
#include "SDL.h" #include "SDL.h"
static void report_power(void) static void
report_power(void)
{ {
int seconds, percent; int seconds, percent;
const SDL_PowerState state = SDL_GetPowerInfo(&seconds, &percent); const SDL_PowerState state = SDL_GetPowerInfo(&seconds, &percent);
char *statestr = NULL; char *statestr = NULL;
printf("SDL-reported power info...\n"); printf("SDL-reported power info...\n");
switch(state) switch (state) {
{
case SDL_POWERSTATE_UNKNOWN: case SDL_POWERSTATE_UNKNOWN:
statestr = "Unknown"; statestr = "Unknown";
break; break;
@ -43,12 +43,14 @@ static void report_power(void)
if (seconds == -1) { if (seconds == -1) {
printf("Time left: unknown\n"); printf("Time left: unknown\n");
} else { } else {
printf("Time left: %d minutes, %d seconds\n", (int) (seconds / 60), (int) (seconds % 60)); printf("Time left: %d minutes, %d seconds\n", (int) (seconds / 60),
(int) (seconds % 60));
} }
} }
int main(int argc, char *argv[]) int
main(int argc, char *argv[])
{ {
if (SDL_Init(SDL_INIT_VIDEO) == -1) { if (SDL_Init(SDL_INIT_VIDEO) == -1) {
fprintf(stderr, "SDL_Init() failed: %s\n", SDL_GetError()); fprintf(stderr, "SDL_Init() failed: %s\n", SDL_GetError());
@ -62,4 +64,3 @@ int main(int argc, char *argv[])
} }
/* end of testpower.c ... */ /* end of testpower.c ... */

View file

@ -61,13 +61,15 @@ LoadSprite(char *file)
} else { } else {
switch (temp->format->BitsPerPixel) { switch (temp->format->BitsPerPixel) {
case 15: case 15:
SDL_SetColorKey(temp, SDL_SRCCOLORKEY, (*(Uint16 *) temp->pixels) & 0x00007FFF); SDL_SetColorKey(temp, SDL_SRCCOLORKEY,
(*(Uint16 *) temp->pixels) & 0x00007FFF);
break; break;
case 16: case 16:
SDL_SetColorKey(temp, SDL_SRCCOLORKEY, *(Uint16 *) temp->pixels); SDL_SetColorKey(temp, SDL_SRCCOLORKEY, *(Uint16 *) temp->pixels);
break; break;
case 24: case 24:
SDL_SetColorKey(temp, SDL_SRCCOLORKEY, (*(Uint32 *) temp->pixels) & 0x00FFFFFF); SDL_SetColorKey(temp, SDL_SRCCOLORKEY,
(*(Uint32 *) temp->pixels) & 0x00FFFFFF);
break; break;
case 32: case 32:
SDL_SetColorKey(temp, SDL_SRCCOLORKEY, *(Uint32 *) temp->pixels); SDL_SetColorKey(temp, SDL_SRCCOLORKEY, *(Uint32 *) temp->pixels);