sdl-1.2.11-patch_PAGE_SIZE.patch 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. diff -urN SDL-1.2.11.orig/src/video/fbcon/SDL_fbvideo.c SDL-1.2.11/src/video/fbcon/SDL_fbvideo.c
  2. --- SDL-1.2.11.orig/src/video/fbcon/SDL_fbvideo.c 2006-05-17 06:16:06.000000000 +0300
  3. +++ SDL-1.2.11/src/video/fbcon/SDL_fbvideo.c 2007-06-24 22:19:41.000000000 +0300
  4. @@ -29,9 +29,17 @@
  5. #include <unistd.h>
  6. #include <sys/ioctl.h>
  7. #include <sys/mman.h>
  8. -#include <asm/page.h> /* For definition of PAGE_SIZE */
  9. #include <linux/vt.h>
  10. +#if defined(linux)
  11. +#define HAS_MMAP_ANON
  12. +#include <sys/types.h>
  13. +#include <sys/mman.h>
  14. +#include <asm/page.h> /* PAGE_SIZE */
  15. +#define HAS_SC_PAGESIZE /* _SC_PAGESIZE may be an enum for Linux */
  16. +#define HAS_GETPAGESIZE
  17. +#endif /* linux */
  18. +
  19. #include "SDL_video.h"
  20. #include "SDL_mouse.h"
  21. #include "../SDL_sysvideo.h"
  22. @@ -474,6 +482,7 @@
  23. unsigned int current_h;
  24. const char *SDL_fbdev;
  25. FILE *modesdb;
  26. + int pagesize = -1;
  27. /* Initialize the library */
  28. SDL_fbdev = SDL_getenv("SDL_FBDEV");
  29. @@ -545,9 +554,27 @@
  30. }
  31. }
  32. +#if defined(_SC_PAGESIZE) && defined(HAS_SC_PAGESIZE)
  33. + pagesize = sysconf(_SC_PAGESIZE);
  34. +#endif
  35. +#ifdef _SC_PAGE_SIZE
  36. + if (pagesize == -1)
  37. + pagesize = sysconf(_SC_PAGE_SIZE);
  38. +#endif
  39. +#ifdef HAS_GETPAGESIZE
  40. + if (pagesize == -1)
  41. + pagesize = getpagesize();
  42. +#endif
  43. +#ifdef PAGE_SIZE
  44. + if (pagesize == -1)
  45. + pagesize = PAGE_SIZE;
  46. +#endif
  47. + if (pagesize == -1)
  48. + pagesize = 4096;
  49. +
  50. /* Memory map the device, compensating for buggy PPC mmap() */
  51. mapped_offset = (((long)finfo.smem_start) -
  52. - (((long)finfo.smem_start)&~(PAGE_SIZE-1)));
  53. + (((long)finfo.smem_start)&~(pagesize-1)));
  54. mapped_memlen = finfo.smem_len+mapped_offset;
  55. mapped_mem = do_mmap(NULL, mapped_memlen,
  56. PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);