SDL_PushEvent()
is useful for injecting custom events into the SDL event queue. Here’s how you might use it to simulate user interactions or internal signals:
#include <SDL.h>
#include <iostream>
int main(int argc, char** argv) {
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow(
"Push Event Example", 100, 100, 640, 480, 0);
SDL_Renderer* renderer = SDL_CreateRenderer(
window, -1, SDL_RENDERER_ACCELERATED);
SDL_Event customEvent;
SDL_zero(customEvent);
customEvent.type = SDL_USEREVENT;
customEvent.user.code = 1; // Custom data
SDL_PushEvent(&customEvent);
bool running = true;
SDL_Event event;
while (running) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) running = false;
if (event.type == SDL_USEREVENT) {
std::cout << "Custom event triggered "
"with code: " << event.user.code << "\n";
}
}
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
Custon event triggered with code: 1
This example shows how to create a custom event and push it to the event queue. When the event is processed in the event loop, it triggers a custom action, in this case, printing a message.
Answers to questions are automatically generated and may not have been reviewed.
Step-by-step guide on creating the SDL2 application and event loops for interactive games