| 838 | } |
| 839 | |
| 840 | void |
| 841 | SDL_AddEventWatch(SDL_EventFilter filter, void *userdata) |
| 842 | { |
| 843 | if (!SDL_event_watchers_lock || SDL_LockMutex(SDL_event_watchers_lock) == 0) { |
| 844 | SDL_EventWatcher *event_watchers; |
| 845 | |
| 846 | event_watchers = SDL_realloc(SDL_event_watchers, (SDL_event_watchers_count + 1) * sizeof(*event_watchers)); |
| 847 | if (event_watchers) { |
| 848 | SDL_EventWatcher *watcher; |
| 849 | |
| 850 | SDL_event_watchers = event_watchers; |
| 851 | watcher = &SDL_event_watchers[SDL_event_watchers_count]; |
| 852 | watcher->callback = filter; |
| 853 | watcher->userdata = userdata; |
| 854 | watcher->removed = SDL_FALSE; |
| 855 | ++SDL_event_watchers_count; |
| 856 | } |
| 857 | |
| 858 | if (SDL_event_watchers_lock) { |
| 859 | SDL_UnlockMutex(SDL_event_watchers_lock); |
| 860 | } |
| 861 | } |
| 862 | } |
| 863 | |
| 864 | void |
| 865 | SDL_DelEventWatch(SDL_EventFilter filter, void *userdata) |