view test/automated/common/common.h @ 5126:d79ff339d1f2

Fixed bug #1056 (Frequent crashes in Touch events by simply touching the screen) Joseba GarcĂ­a Echebarria 2010-12-15 01:55:22 PST I believe the crash is caused by a check not being performed on wether an SDL_Touch element is NULL before using it in the SDL_SendTouchMotion function in src/events/SDL_touch.c around line 400. Judging from the rest of the code, there's a missing if (!touch) { return 0; } before using "touch" as SDL_GetFinger(), SDL_GetFingerIndexId() use touch->num_fingers without checking. I can attach a patch if you like. It seems pretty straightforward, though. I have yet to discover why touch is being returned as NULL as this error is only triggered when an actual gesture has been performed, maybe something related to SDL_AddTouch()?
author Sam Lantinga <slouken@libsdl.org>
date Fri, 28 Jan 2011 10:21:58 -0800
parents 2c07bb579922
children
line wrap: on
line source

/**
 * Automated SDL test common framework.
 *
 * Written by Edgar Simo "bobbens"
 *
 * Released under Public Domain.
 */


#ifndef COMMON_H
#  define COMMON_H


#  define FORMAT  SDL_PIXELFORMAT_ARGB8888
#  define AMASK   0xff000000 /**< Alpha bit mask. */
#  define RMASK   0x00ff0000 /**< Red bit mask. */
#  define GMASK   0x0000ff00 /**< Green bit mask. */
#  define BMASK   0x000000ff /**< Blue bit mask. */


typedef struct SurfaceImage_s {
   int width;
   int height;
   unsigned int  bytes_per_pixel; /* 3:RGB, 4:RGBA */ 
   const unsigned char pixel_data[];
} SurfaceImage_t;

#define ALLOWABLE_ERROR_OPAQUE	0
#define ALLOWABLE_ERROR_BLENDED	64

/**
 * @brief Compares a surface and a surface image for equality.
 *
 *    @param sur Surface to compare.
 *    @param img Image to compare against.
 *    @return 0 if they are the same, -1 on error and positive if different.
 */
int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img, int allowable_error );


#endif /* COMMON_H */