QT与Chromium MessageLoop整合 - housekeeper-software/tech GitHub Wiki
需要修改的文件
base/message_loop/message_loop_current.h
base/run_loop.h
base/task/sequence_manager/sequence_manager_impl.h
修改 message_loop_current.h
因为 QT MessagePump需要用到 base::MessageLoopCurrent::GetCurrentSequenceManagerImpl()
所以要增加友元
namespace qt{
class MessagePumpForUIQt;
}
friend class MessageLoopImpl;
friend class MessagePumpLibeventTest;
friend class ScheduleWorkTest;
friend class Thread;
friend class sequence_manager::internal::SequenceManagerImpl;
friend class MessageLoopTaskRunnerTest;
friend class web::TestWebThreadBundle;
friend class qt::MessagePumpForUIQt;
修改 sequence_manager_impl.h
因为MessagePumpForUIQt 要访问:
SequenceManagerImpl::const std::unique_ptr<internal::ThreadController> controller_;
这是一个私有成员,要加友元
friend class internal::TaskQueueImpl;
friend class ::base::sequence_manager::SequenceManagerForTest;
friend class qt::MessagePumpForUIQt;
friend class qt::ContextQt;
修改run_loop.h
FRIEND_TEST_ALL_PREFIXES(MessageLoopTypedTest, RunLoopQuitOrderAfter);
friend class qt::ContextQt;
因为 ContextQt要访问 BeforeRun,AfterRun