Creating the Main Loop with SDL2

Dynamic Event Handling with SDL_PushEvent()

How can I dynamically trigger events in SDL2 using SDL_PushEvent()?

Abstract art representing computer programming

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_Window* window = SDL_CreateWindow(
    "Push Event Example", 100, 100, 640, 480, 0);
  SDL_Renderer* renderer = SDL_CreateRenderer(

  SDL_Event customEvent;
  customEvent.type = SDL_USEREVENT;
  customEvent.user.code = 1;  // Custom data

  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);

  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.

Part of the course:

Game Dev with SDL2

Learn C++ and SDL development by creating hands on, practical projects inspired by classic retro games

Free, unlimited access

This course includes:

  • 27 Lessons
  • 100+ Code Samples
  • 91% Positive Reviews
  • Regularly Updated
  • Help and FAQ
Free, Unlimited Access

Professional C++

Comprehensive course covering advanced concepts, and how to use them on large-scale projects.

Screenshot from Warhammer: Total War
Screenshot from Tomb Raider
Screenshot from Jedi: Fallen Order
Contact|Privacy Policy|Terms of Use
Copyright © 2024 - All Rights Reserved