Browse Source

LibCore+LibGUI: Remove GEventLoop and use CEventLoop everywhere

GEventLoop was just a dummy subclass of CEventLoop anyway. The only
thing it actually did was make sure a GWindowServerConnectionw was
instantiated. We now take care of that in GApplication instead.

CEventLoop is now non-virtual and a little less confusing. :^)
Andreas Kling 5 years ago
parent
commit
34d0e96aec

+ 2 - 2
Applications/Piano/main.cpp

@@ -37,8 +37,8 @@ int main(int argc, char** argv)
             u8 buffer[4096];
             piano_widget->fill_audio_buffer(buffer, sizeof(buffer));
             audio->write(buffer, sizeof(buffer));
-            GEventLoop::current().post_event(*piano_widget, make<CCustomEvent>(0));
-            GEventLoop::wake();
+            CEventLoop::current().post_event(*piano_widget, make<CCustomEvent>(0));
+            CEventLoop::wake();
         }
     });
     sound_thread.start();

+ 1 - 0
Libraries/LibCore/CEventLoop.cpp

@@ -181,6 +181,7 @@ CEventLoop& CEventLoop::current()
 
 void CEventLoop::quit(int code)
 {
+    dbg() << "CEventLoop::quit(" << code << ")";
     m_exit_requested = true;
     m_exit_code = code;
 }

+ 1 - 1
Libraries/LibCore/CEventLoop.h

@@ -18,7 +18,7 @@ class CNotifier;
 class CEventLoop {
 public:
     CEventLoop();
-    virtual ~CEventLoop();
+    ~CEventLoop();
 
     int exec();
 

+ 2 - 1
Libraries/LibGUI/GApplication.cpp

@@ -21,7 +21,8 @@ GApplication::GApplication(int argc, char** argv)
     (void)argv;
     ASSERT(!s_the);
     s_the = this;
-    m_event_loop = make<GEventLoop>();
+    m_event_loop = make<CEventLoop>();
+    GWindowServerConnection::the();
 }
 
 GApplication::~GApplication()

+ 2 - 2
Libraries/LibGUI/GApplication.h

@@ -5,8 +5,8 @@
 #include <AK/OwnPtr.h>
 #include <LibGUI/GShortcut.h>
 
+class CEventLoop;
 class GAction;
-class GEventLoop;
 class GKeyEvent;
 class GMenuBar;
 class GWindow;
@@ -36,7 +36,7 @@ public:
     void did_delete_last_window(Badge<GWindow>);
 
 private:
-    OwnPtr<GEventLoop> m_event_loop;
+    OwnPtr<CEventLoop> m_event_loop;
     OwnPtr<GMenuBar> m_menubar;
     HashMap<GShortcut, GAction*> m_global_shortcut_actions;
     class TooltipWindow;

+ 1 - 4
Libraries/LibGUI/GDialog.cpp

@@ -1,12 +1,10 @@
 #include <LibGUI/GDesktop.h>
 #include <LibGUI/GDialog.h>
-#include <LibGUI/GEventLoop.h>
 
 GDialog::GDialog(CObject* parent)
     : GWindow(parent)
 {
     set_modal(true);
-
 }
 
 GDialog::~GDialog()
@@ -16,7 +14,7 @@ GDialog::~GDialog()
 int GDialog::exec()
 {
     ASSERT(!m_event_loop);
-    m_event_loop = make<GEventLoop>();
+    m_event_loop = make<CEventLoop>();
     auto new_rect = rect();
     if (parent() && parent()->is_window()) {
         auto& parent_window = *static_cast<GWindow*>(parent());
@@ -47,4 +45,3 @@ void GDialog::close()
     GWindow::close();
     m_event_loop->quit(ExecCancel);
 }
-

+ 2 - 2
Libraries/LibGUI/GDialog.h

@@ -1,6 +1,6 @@
 #pragma once
 
-#include <LibGUI/GEventLoop.h>
+#include <LibCore/CEventLoop.h>
 #include <LibGUI/GWindow.h>
 
 class GDialog : public GWindow {
@@ -25,6 +25,6 @@ protected:
     explicit GDialog(CObject* parent);
 
 private:
-    OwnPtr<GEventLoop> m_event_loop;
+    OwnPtr<CEventLoop> m_event_loop;
     int m_result { ExecAborted };
 };

+ 0 - 11
Libraries/LibGUI/GEventLoop.cpp

@@ -43,17 +43,6 @@ void GWindowServerConnection::handshake()
     handle_greeting(response);
 }
 
-GEventLoop::GEventLoop()
-{
-    // ensure the WS connection is up, as our users might be expecting it to be
-    // valid very early (via e.g. GDesktop) :)
-    GWindowServerConnection::the();
-}
-
-GEventLoop::~GEventLoop()
-{
-}
-
 void GWindowServerConnection::handle_paint_event(const WSAPI_ServerMessage& event, GWindow& window, const ByteBuffer& extra_data)
 {
 #ifdef GEVENTLOOP_DEBUG

+ 0 - 11
Libraries/LibGUI/GEventLoop.h

@@ -33,14 +33,3 @@ private:
     void handle_wm_event(const WSAPI_ServerMessage&, GWindow&);
     void handle_greeting(WSAPI_ServerMessage&);
 };
-
-class GEventLoop final : public CEventLoop {
-public:
-    GEventLoop();
-    virtual ~GEventLoop() override;
-
-    static GEventLoop& current() { return static_cast<GEventLoop&>(CEventLoop::current()); }
-
-private:
-    void process_unprocessed_bundles();
-};

+ 4 - 4
Libraries/LibGUI/GWindow.cpp

@@ -497,12 +497,12 @@ void GWindow::set_focused_widget(GWidget* widget)
     if (m_focused_widget == widget)
         return;
     if (m_focused_widget) {
-        GEventLoop::current().post_event(*m_focused_widget, make<GEvent>(GEvent::FocusOut));
+        CEventLoop::current().post_event(*m_focused_widget, make<GEvent>(GEvent::FocusOut));
         m_focused_widget->update();
     }
     m_focused_widget = widget ? widget->make_weak_ptr() : nullptr;
     if (m_focused_widget) {
-        GEventLoop::current().post_event(*m_focused_widget, make<GEvent>(GEvent::FocusIn));
+        CEventLoop::current().post_event(*m_focused_widget, make<GEvent>(GEvent::FocusIn));
         m_focused_widget->update();
     }
 }
@@ -567,12 +567,12 @@ void GWindow::set_hovered_widget(GWidget* widget)
         return;
 
     if (m_hovered_widget)
-        GEventLoop::current().post_event(*m_hovered_widget, make<GEvent>(GEvent::Leave));
+        CEventLoop::current().post_event(*m_hovered_widget, make<GEvent>(GEvent::Leave));
 
     m_hovered_widget = widget ? widget->make_weak_ptr() : nullptr;
 
     if (m_hovered_widget)
-        GEventLoop::current().post_event(*m_hovered_widget, make<GEvent>(GEvent::Enter));
+        CEventLoop::current().post_event(*m_hovered_widget, make<GEvent>(GEvent::Enter));
 }
 
 void GWindow::set_current_backing_bitmap(GraphicsBitmap& bitmap, bool flush_immediately)

+ 4 - 2
Userland/copy.cpp

@@ -1,10 +1,12 @@
 #include <AK/ByteBuffer.h>
 #include <AK/String.h>
 #include <AK/StringBuilder.h>
+#include <LibCore/CEventLoop.h>
 #include <LibCore/CFile.h>
 #include <LibGUI/GClipboard.h>
-#include <LibGUI/GEventLoop.h>
 #include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
 
 struct Options {
     String data;
@@ -86,7 +88,7 @@ int main(int argc, char* argv[])
 {
     Options options = parse_options(argc, argv);
 
-    new GEventLoop;
+    CEventLoop loop;
 
     GClipboard& clipboard = GClipboard::the();
     clipboard.set_data(options.data, options.type);

+ 4 - 2
Userland/paste.cpp

@@ -1,7 +1,9 @@
 #include <AK/String.h>
+#include <LibCore/CEventLoop.h>
 #include <LibGUI/GClipboard.h>
-#include <LibGUI/GEventLoop.h>
 #include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
 
 struct Options {
     bool print_type { false };
@@ -62,7 +64,7 @@ int main(int argc, char* argv[])
 {
     Options options = parse_options(argc, argv);
 
-    new GEventLoop;
+    CEventLoop loop;
 
     GClipboard& clipboard = GClipboard::the();
     auto data_and_type = clipboard.data_and_type();