SDL_atarievents.c
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga
  4.     This library is free software; you can redistribute it and/or
  5.     modify it under the terms of the GNU Library General Public
  6.     License as published by the Free Software Foundation; either
  7.     version 2 of the License, or (at your option) any later version.
  8.     This library is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.     Library General Public License for more details.
  12.     You should have received a copy of the GNU Library General Public
  13.     License along with this library; if not, write to the Free
  14.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15.     Sam Lantinga
  16.     slouken@libsdl.org
  17. */
  18. #ifdef SAVE_RCSID
  19. static char rcsid =
  20.  "@(#) $Id: SDL_atarievents.c,v 1.1 2002/04/22 21:38:04 wmay Exp $";
  21. #endif
  22. /*
  23.  * Atari keyboard events manager
  24.  *
  25.  * Patrice Mandin
  26.  *
  27.  * This routines choose what the final event manager will be
  28.  */
  29. #include <stdlib.h>
  30. #include <string.h>
  31. #include <sys/cookie.h>
  32. #include "SDL.h"
  33. #include "SDL_sysevents.h"
  34. #include "SDL_events_c.h"
  35. #include "SDL_atarievents_c.h"
  36. #include "SDL_biosevents_c.h"
  37. #include "SDL_gemdosevents_c.h"
  38. #include "SDL_ikbdevents_c.h"
  39. enum {
  40. MCH_ST=0,
  41. MCH_STE,
  42. MCH_TT,
  43. MCH_F30
  44. };
  45. void (*Atari_ShutdownEvents)(void);
  46. static void Atari_InitializeEvents(_THIS)
  47. {
  48. const char *envr;
  49. unsigned long cookie_mch;
  50. /* Test if we are on an Atari machine or not */
  51. if (Getcookie(C__MCH, &cookie_mch) == C_NOTFOUND) {
  52. cookie_mch = 0;
  53. }
  54. cookie_mch >>= 16;
  55. /* Default is Ikbd, the faster except for clones */
  56. switch(cookie_mch) {
  57. case MCH_ST:
  58. case MCH_STE:
  59. case MCH_TT:
  60. case MCH_F30:
  61. this->InitOSKeymap=AtariIkbd_InitOSKeymap;
  62. this->PumpEvents=AtariIkbd_PumpEvents;
  63. Atari_ShutdownEvents=AtariIkbd_ShutdownEvents;
  64. break;
  65. default:
  66. this->InitOSKeymap=AtariGemdos_InitOSKeymap;
  67. this->PumpEvents=AtariGemdos_PumpEvents;
  68. Atari_ShutdownEvents=AtariGemdos_ShutdownEvents;
  69. break;
  70. }
  71. envr = getenv("SDL_ATARI_EVENTSDRIVER");
  72.   if (!envr) {
  73. return;
  74. }
  75. if (strcmp(envr, "ikbd") == 0) {
  76. this->InitOSKeymap=AtariIkbd_InitOSKeymap;
  77. this->PumpEvents=AtariIkbd_PumpEvents;
  78. Atari_ShutdownEvents=AtariIkbd_ShutdownEvents;
  79. }
  80. if (strcmp(envr, "gemdos") == 0) {
  81. this->InitOSKeymap=AtariGemdos_InitOSKeymap;
  82. this->PumpEvents=AtariGemdos_PumpEvents;
  83. Atari_ShutdownEvents=AtariGemdos_ShutdownEvents;
  84. }
  85. if (strcmp(envr, "bios") == 0) {
  86. this->InitOSKeymap=AtariBios_InitOSKeymap;
  87. this->PumpEvents=AtariBios_PumpEvents;
  88. Atari_ShutdownEvents=AtariBios_ShutdownEvents;
  89. }
  90. }
  91. void Atari_InitOSKeymap(_THIS)
  92. {
  93. Atari_InitializeEvents(this);
  94. /* Call choosen routine */
  95. this->InitOSKeymap(this);
  96. }
  97. void Atari_PumpEvents(_THIS)
  98. {
  99. Atari_InitializeEvents(this);
  100. /* Call choosen routine */
  101. this->PumpEvents(this);
  102. }