view src/audio/SDL_mixer_MMX.h @ 5043:da347bfed240

Florian Forster to sdl in SDL 1.3 (revision 5508 from SVN), the method used to calculate the bits per pixel from a “int format” differ between “SDL_ListModes” (which always uses the “SDL_BITSPERPIXEL” macro) and “SDL_PixelFormatEnumTo- Masks” (which uses either “SDL_BITSPERPIXEL” or “SDL_BYTESPERPIXEL * 8”, depending on the value of “SDL_BYTESPERPIXEL”). Because the values are later compared in “SDL_ListModes” this may lead to some valid video modes not being returned. In my case the only mode returned by “SDL_GetNumDisplayModes” was dismissed and NULL was returned. (This led to the calling application sticking its head in the sand.) The attached patch copies the method used within “SDL_PixelFormatEnumTo- Masks” to “SDL_ListModes”. This solved the problem for me though I don't fully understand the method used by “SDL_PixelFormatEnumToMasks”.
author Sam Lantinga <slouken@libsdl.org>
date Wed, 19 Jan 2011 16:06:47 -0800
parents 4d46850be3f6
children
line wrap: on
line source

/*
    headers for MMX assembler version of SDL_MixAudio
    Copyright 2002 Stephane Marchesin (stephane.marchesin@wanadoo.fr)
    This code is licensed under the LGPL (see COPYING for details)

    Assumes buffer size in bytes is a multiple of 16
    Assumes SDL_MIX_MAXVOLUME = 128
*/
#include "SDL_config.h"

#if defined(SDL_BUGGY_MMX_MIXERS) /* buggy, so we're disabling them. --ryan. */
#if defined(__GNUC__) && defined(__i386__) && defined(SDL_ASSEMBLY_ROUTINES)
void SDL_MixAudio_MMX_S16(char *, char *, unsigned int, int);
void SDL_MixAudio_MMX_S8(char *, char *, unsigned int, int);
#endif
#endif /* SDL_BUGGY_MMX_MIXERS */
/* vi: set ts=4 sw=4 expandtab: */