Quellcode durchsuchen

WindowServer: Remove "unsafe" flag in WSMessageLoop::post_event().

This hack is no longer needed now that we have a Finalizer process that can
take locks without having to worry about the interrupt flag.
Andreas Kling vor 6 Jahren
Ursprung
Commit
26230c0647
3 geänderte Dateien mit 4 neuen und 13 gelöschten Zeilen
  1. 2 4
      Kernel/ProcessGUI.cpp
  2. 1 8
      WindowServer/WSMessageLoop.cpp
  3. 1 1
      WindowServer/WSMessageLoop.h

+ 2 - 4
Kernel/ProcessGUI.cpp

@@ -77,7 +77,7 @@ int Process::gui$destroy_window(int window_id)
     if (it == m_windows.end())
         return -EBADWINDOW;
     auto message = make<WSMessage>(WSMessage::WM_DestroyWindow);
-    WSMessageLoop::the().post_message((*it).value.leak_ptr(), move(message), true);
+    WSMessageLoop::the().post_message((*it).value.leak_ptr(), move(message));
     m_windows.remove(window_id);
     return 0;
 }
@@ -258,12 +258,10 @@ int Process::gui$set_global_cursor_tracking_enabled(int window_id, bool enabled)
 
 void Process::destroy_all_windows()
 {
-    InterruptFlagSaver saver;
-    sti();
     for (auto& it : m_windows) {
         auto message = make<WSMessage>(WSMessage::WM_DestroyWindow);
         it.value->notify_process_died(Badge<Process>());
-        WSMessageLoop::the().post_message(it.value.leak_ptr(), move(message), true);
+        WSMessageLoop::the().post_message(it.value.leak_ptr(), move(message));
     }
     m_windows.clear();
 }

+ 1 - 8
WindowServer/WSMessageLoop.cpp

@@ -67,15 +67,8 @@ int WSMessageLoop::exec()
     }
 }
 
-void WSMessageLoop::post_message(WSMessageReceiver* receiver, OwnPtr<WSMessage>&& message, bool unsafe)
+void WSMessageLoop::post_message(WSMessageReceiver* receiver, OwnPtr<WSMessage>&& message)
 {
-    if (unsafe) {
-        // FIXME: This is such a hack. It should not exist.
-        m_queued_messages.append({ receiver, move(message) });
-        if (current != m_server_process)
-            m_server_process->request_wakeup();
-        return;
-    }
     LOCKER(m_lock);
 #ifdef WSEVENTLOOP_DEBUG
     dbgprintf("WSMessageLoop::post_message: {%u} << receiver=%p, message=%p\n", m_queued_messages.size(), receiver, message.ptr());

+ 1 - 1
WindowServer/WSMessageLoop.h

@@ -15,7 +15,7 @@ public:
 
     int exec();
 
-    void post_message(WSMessageReceiver* receiver, OwnPtr<WSMessage>&&, bool unsafe = false);
+    void post_message(WSMessageReceiver* receiver, OwnPtr<WSMessage>&&);
 
     static WSMessageLoop& the();