mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-11-04 01:34:32 +00:00 
			
		
		
		
	Examples: SDL3: Added comments to clarify setup for users of the unfortunate SDL_MAIN_USE_CALLBACKS feature. (#8455)
This commit is contained in:
		@@ -115,6 +115,8 @@ Other changes:
 | 
				
			|||||||
- Demo: Reorganized "Widgets" section to be alphabetically ordered and split in more functions.
 | 
					- Demo: Reorganized "Widgets" section to be alphabetically ordered and split in more functions.
 | 
				
			||||||
- Demo: Combos: demonstrate a very simple way to add a filter to a combo,
 | 
					- Demo: Combos: demonstrate a very simple way to add a filter to a combo,
 | 
				
			||||||
  by showing the filter inside the combo contents. (#718)
 | 
					  by showing the filter inside the combo contents. (#718)
 | 
				
			||||||
 | 
					- Examples: SDL3: Added comments to clarify setup for users of the unfortunate
 | 
				
			||||||
 | 
					  SDL_MAIN_USE_CALLBACKS feature. (#8455)
 | 
				
			||||||
- Backends: GLFW: Fixed clipboard handler assertion when using GLFW <= 3.2.1 compiled
 | 
					- Backends: GLFW: Fixed clipboard handler assertion when using GLFW <= 3.2.1 compiled
 | 
				
			||||||
  with asserts enabled. (#8452)
 | 
					  with asserts enabled. (#8452)
 | 
				
			||||||
- Backends: SDL2, SDL3: Using SDL_OpenURL() in platform_io.Platform_OpenInShellFn
 | 
					- Backends: SDL2, SDL3: Using SDL_OpenURL() in platform_io.Platform_OpenInShellFn
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,6 +26,7 @@
 | 
				
			|||||||
int main(int, char**)
 | 
					int main(int, char**)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // Setup SDL
 | 
					    // Setup SDL
 | 
				
			||||||
 | 
					    // [If using SDL_MAIN_USE_CALLBACKS: all code below until the main loop starts would likely be your SDL_AppInit() function]
 | 
				
			||||||
    if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD))
 | 
					    if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        printf("Error: SDL_Init(): %s\n", SDL_GetError());
 | 
					        printf("Error: SDL_Init(): %s\n", SDL_GetError());
 | 
				
			||||||
@@ -139,6 +140,7 @@ int main(int, char**)
 | 
				
			|||||||
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data.
 | 
					        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data.
 | 
				
			||||||
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data.
 | 
					        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data.
 | 
				
			||||||
        // Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
 | 
					        // Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
 | 
				
			||||||
 | 
					        // [If using SDL_MAIN_USE_CALLBACKS: call ImGui_ImplSDL3_ProcessEvent() from your SDL_AppEvent() function]
 | 
				
			||||||
        SDL_Event event;
 | 
					        SDL_Event event;
 | 
				
			||||||
        while (SDL_PollEvent(&event))
 | 
					        while (SDL_PollEvent(&event))
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -148,6 +150,8 @@ int main(int, char**)
 | 
				
			|||||||
            if (event.type == SDL_EVENT_WINDOW_CLOSE_REQUESTED && event.window.windowID == SDL_GetWindowID(window))
 | 
					            if (event.type == SDL_EVENT_WINDOW_CLOSE_REQUESTED && event.window.windowID == SDL_GetWindowID(window))
 | 
				
			||||||
                done = true;
 | 
					                done = true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // [If using SDL_MAIN_USE_CALLBACKS: all code below would likely be your SDL_AppIterate() function]
 | 
				
			||||||
        if (SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED)
 | 
					        if (SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            SDL_Delay(10);
 | 
					            SDL_Delay(10);
 | 
				
			||||||
@@ -209,6 +213,7 @@ int main(int, char**)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Cleanup
 | 
					    // Cleanup
 | 
				
			||||||
 | 
					    // [If using SDL_MAIN_USE_CALLBACKS: all code below would likely be your SDL_AppQuit() function]
 | 
				
			||||||
    ImGui_ImplOpenGL3_Shutdown();
 | 
					    ImGui_ImplOpenGL3_Shutdown();
 | 
				
			||||||
    ImGui_ImplSDL3_Shutdown();
 | 
					    ImGui_ImplSDL3_Shutdown();
 | 
				
			||||||
    ImGui::DestroyContext();
 | 
					    ImGui::DestroyContext();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,8 @@
 | 
				
			|||||||
int main(int, char**)
 | 
					int main(int, char**)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // Setup SDL
 | 
					    // Setup SDL
 | 
				
			||||||
    if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD) != 0)
 | 
					    // [If using SDL_MAIN_USE_CALLBACKS: all code below until the main loop starts would likely be your SDL_AppInit() function]
 | 
				
			||||||
 | 
					    if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        printf("Error: SDL_Init(): %s\n", SDL_GetError());
 | 
					        printf("Error: SDL_Init(): %s\n", SDL_GetError());
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
@@ -105,6 +106,7 @@ int main(int, char**)
 | 
				
			|||||||
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data.
 | 
					        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data.
 | 
				
			||||||
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data.
 | 
					        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data.
 | 
				
			||||||
        // Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
 | 
					        // Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
 | 
				
			||||||
 | 
					        // [If using SDL_MAIN_USE_CALLBACKS: call ImGui_ImplSDL3_ProcessEvent() from your SDL_AppEvent() function]
 | 
				
			||||||
        SDL_Event event;
 | 
					        SDL_Event event;
 | 
				
			||||||
        while (SDL_PollEvent(&event))
 | 
					        while (SDL_PollEvent(&event))
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -114,6 +116,8 @@ int main(int, char**)
 | 
				
			|||||||
            if (event.type == SDL_EVENT_WINDOW_CLOSE_REQUESTED && event.window.windowID == SDL_GetWindowID(window))
 | 
					            if (event.type == SDL_EVENT_WINDOW_CLOSE_REQUESTED && event.window.windowID == SDL_GetWindowID(window))
 | 
				
			||||||
                done = true;
 | 
					                done = true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // [If using SDL_MAIN_USE_CALLBACKS: all code below would likely be your SDL_AppIterate() function]
 | 
				
			||||||
        if (SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED)
 | 
					        if (SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            SDL_Delay(10);
 | 
					            SDL_Delay(10);
 | 
				
			||||||
@@ -199,6 +203,7 @@ int main(int, char**)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Cleanup
 | 
					    // Cleanup
 | 
				
			||||||
 | 
					    // [If using SDL_MAIN_USE_CALLBACKS: all code below would likely be your SDL_AppQuit() function]
 | 
				
			||||||
    SDL_WaitForGPUIdle(gpu_device);
 | 
					    SDL_WaitForGPUIdle(gpu_device);
 | 
				
			||||||
    ImGui_ImplSDL3_Shutdown();
 | 
					    ImGui_ImplSDL3_Shutdown();
 | 
				
			||||||
    ImGui_ImplSDLGPU3_Shutdown();
 | 
					    ImGui_ImplSDLGPU3_Shutdown();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,6 +24,7 @@
 | 
				
			|||||||
int main(int, char**)
 | 
					int main(int, char**)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // Setup SDL
 | 
					    // Setup SDL
 | 
				
			||||||
 | 
					    // [If using SDL_MAIN_USE_CALLBACKS: all code below until the main loop starts would likely be your SDL_AppInit() function]
 | 
				
			||||||
    if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD))
 | 
					    if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        printf("Error: SDL_Init(): %s\n", SDL_GetError());
 | 
					        printf("Error: SDL_Init(): %s\n", SDL_GetError());
 | 
				
			||||||
@@ -101,6 +102,7 @@ int main(int, char**)
 | 
				
			|||||||
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data.
 | 
					        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data.
 | 
				
			||||||
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data.
 | 
					        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data.
 | 
				
			||||||
        // Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
 | 
					        // Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
 | 
				
			||||||
 | 
					        // [If using SDL_MAIN_USE_CALLBACKS: call ImGui_ImplSDL3_ProcessEvent() from your SDL_AppEvent() function]
 | 
				
			||||||
        SDL_Event event;
 | 
					        SDL_Event event;
 | 
				
			||||||
        while (SDL_PollEvent(&event))
 | 
					        while (SDL_PollEvent(&event))
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -110,6 +112,8 @@ int main(int, char**)
 | 
				
			|||||||
            if (event.type == SDL_EVENT_WINDOW_CLOSE_REQUESTED && event.window.windowID == SDL_GetWindowID(window))
 | 
					            if (event.type == SDL_EVENT_WINDOW_CLOSE_REQUESTED && event.window.windowID == SDL_GetWindowID(window))
 | 
				
			||||||
                done = true;
 | 
					                done = true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // [If using SDL_MAIN_USE_CALLBACKS: all code below would likely be your SDL_AppIterate() function]
 | 
				
			||||||
        if (SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED)
 | 
					        if (SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            SDL_Delay(10);
 | 
					            SDL_Delay(10);
 | 
				
			||||||
@@ -171,6 +175,7 @@ int main(int, char**)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Cleanup
 | 
					    // Cleanup
 | 
				
			||||||
 | 
					    // [If using SDL_MAIN_USE_CALLBACKS: all code below would likely be your SDL_AppQuit() function]
 | 
				
			||||||
    ImGui_ImplSDLRenderer3_Shutdown();
 | 
					    ImGui_ImplSDLRenderer3_Shutdown();
 | 
				
			||||||
    ImGui_ImplSDL3_Shutdown();
 | 
					    ImGui_ImplSDL3_Shutdown();
 | 
				
			||||||
    ImGui::DestroyContext();
 | 
					    ImGui::DestroyContext();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -345,7 +345,8 @@ static void FramePresent(ImGui_ImplVulkanH_Window* wd)
 | 
				
			|||||||
int main(int, char**)
 | 
					int main(int, char**)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // Setup SDL
 | 
					    // Setup SDL
 | 
				
			||||||
    if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD) != 0)
 | 
					    // [If using SDL_MAIN_USE_CALLBACKS: all code below until the main loop starts would likely be your SDL_AppInit() function]
 | 
				
			||||||
 | 
					    if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        printf("Error: SDL_Init(): %s\n", SDL_GetError());
 | 
					        printf("Error: SDL_Init(): %s\n", SDL_GetError());
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
@@ -447,6 +448,7 @@ int main(int, char**)
 | 
				
			|||||||
        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data.
 | 
					        // - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data.
 | 
				
			||||||
        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data.
 | 
					        // - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data.
 | 
				
			||||||
        // Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
 | 
					        // Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
 | 
				
			||||||
 | 
					        // [If using SDL_MAIN_USE_CALLBACKS: call ImGui_ImplSDL3_ProcessEvent() from your SDL_AppEvent() function]
 | 
				
			||||||
        SDL_Event event;
 | 
					        SDL_Event event;
 | 
				
			||||||
        while (SDL_PollEvent(&event))
 | 
					        while (SDL_PollEvent(&event))
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -456,6 +458,8 @@ int main(int, char**)
 | 
				
			|||||||
            if (event.type == SDL_EVENT_WINDOW_CLOSE_REQUESTED && event.window.windowID == SDL_GetWindowID(window))
 | 
					            if (event.type == SDL_EVENT_WINDOW_CLOSE_REQUESTED && event.window.windowID == SDL_GetWindowID(window))
 | 
				
			||||||
                done = true;
 | 
					                done = true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // [If using SDL_MAIN_USE_CALLBACKS: all code below would likely be your SDL_AppIterate() function]
 | 
				
			||||||
        if (SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED)
 | 
					        if (SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            SDL_Delay(10);
 | 
					            SDL_Delay(10);
 | 
				
			||||||
@@ -531,6 +535,7 @@ int main(int, char**)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Cleanup
 | 
					    // Cleanup
 | 
				
			||||||
 | 
					    // [If using SDL_MAIN_USE_CALLBACKS: all code below would likely be your SDL_AppQuit() function]
 | 
				
			||||||
    err = vkDeviceWaitIdle(g_Device);
 | 
					    err = vkDeviceWaitIdle(g_Device);
 | 
				
			||||||
    check_vk_result(err);
 | 
					    check_vk_result(err);
 | 
				
			||||||
    ImGui_ImplVulkan_Shutdown();
 | 
					    ImGui_ImplVulkan_Shutdown();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user