imgui-sfml icon indicating copy to clipboard operation
imgui-sfml copied to clipboard

BadCursor error on shutdown

Open naftali100 opened this issue 2 years ago • 3 comments

X Error of failed request:  BadCursor (invalid Cursor parameter)
  Major opcode of failed request:  2 (X_ChangeWindowAttributes)
  Resource id in failed request:  0x7000017
  Serial number of failed request:  525
  Current serial number in output stream:  531

getting this error when mouse click cause shutdown (clicking imgui button that cause the main loop to break), and sfml window was not closed (easy to fix.. just check if the window is open and close if true...), And call sf::imgui::shutdown().

I thought it worth sharing if someone will get the same error... it took me about a hour to find the problem...

naftali100 avatar Apr 18 '22 19:04 naftali100

Hello Please provide a small reproducible example - hard to tell what you mean otherwise, sorry.

eliasdaler avatar Apr 20 '22 00:04 eliasdaler

I tried to guess what is meant here, and even throw in an extra cursor manipulation, but I don't observe any such error.

diff --git a/examples/minimal/main.cpp b/examples/minimal/main.cpp
index 2c19abd08..d30ae607e 100644
--- a/examples/minimal/main.cpp
+++ b/examples/minimal/main.cpp
@@ -31,7 +31,11 @@ int main() {
         ImGui::ShowDemoWindow();
 
         ImGui::Begin("Hello, world!");
-        ImGui::Button("Look at this pretty button");
+        if (ImGui::Button("Exit")) {
+            window.close();
+        }
+        if (ImGui::IsItemHovered())
+            ImGui::SetMouseCursor(ImGuiMouseCursor_Hand);
         ImGui::End();
 
         window.clear();

c++ -I. -I../cimgui/imgui examples/minimal/main.cpp imgui-SFML.cpp ../cimgui/imgui/{imgui_demo.cpp,imgui_widgets.cpp,imgui.cpp,imgui_draw.cpp,imgui_tables.cpp} -lsfml-graphics -lsfml-window -lsfml-system -lGL && ./a.out

Does not reproduce when I click the button

oprypin avatar Apr 20 '22 22:04 oprypin

i'm sorry for the delay. i forgot about it... here is a minimal example

int main(){
    sf::RenderWindow m_wim {sf::VideoMode(100, 100), "World"};
    bool ImGuiInit = ImGui::SFML::Init(m_win);
    bool running = true;
    sf::Clock clock;
    while (running) {
        sf::Event event;
        while (m_win.pollEvent(event)) {
            ImGui::SFML::ProcessEvent(m_win, event);
            if(event.type == sf::Event::MouseButtonReleased){
                running = false;
            }
        }
        auto deltaTime = clock.restart();
        ImGui::SFML::Update(m_win, deltaTime);
        m_win.clear();
        ImGui::SFML::Render(m_win);
        m_win.display();

    }
    ImGui::SFML::Shutdown();
}

i got this error in kde on arch

naftali100 avatar Apr 21 '22 05:04 naftali100