|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2021 nono project
4: // Licensed under nono-license.txt
5: //
6:
1.1.1.2 ! root 7: //
! 8: // UI スレッドへのメッセージ機構
! 9: //
! 10:
1.1 root 11: #include "uimessage.h"
12:
13: /*static*/ UIMessage::Queue UIMessage::queue {};
14: /*static*/ std::function<void(UIMessage::Queue&)> UIMessage::process {};
15:
16: // コンストラクタ
17: UIMessage::UIMessage()
18: : UIMessage(ID::NONE, 0)
19: {
20: }
21:
22: // コンストラクタ (ID, argあり)
23: UIMessage::UIMessage(ID id_, int arg_)
24: {
25: id = id_;
26: arg = arg_;
27: }
28:
29: /*static*/ void
30: UIMessage::Attach(const std::function<void(Queue&)>& process_)
31: {
32: process = process_;
33: // 溜まっているものを処理する
34: process(queue);
35: }
36:
37: void
38: UIMessage::Post()
39: {
40: queue.EnqueueForce(*this);
41: if (process) {
42: process(queue);
43: }
44: }
45:
46: /*static*/ void
47: UIMessage::Post(ID id)
48: {
49: UIMessage(id, 0).Post();
50: }
51:
52: /*static*/ void
53: UIMessage::Post(ID id, int arg)
54: {
55: UIMessage(id, arg).Post();
56: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.