summaryrefslogtreecommitdiff
path: root/src/input_common/main.cpp
diff options
context:
space:
mode:
authorGravatar Lioncash2022-11-28 09:19:01 -0500
committerGravatar Lioncash2022-11-28 10:00:37 -0500
commit2ec7d0b5fda0fe6cbafcc235e3d8cc91b0dc81e0 (patch)
treec61fdcf120b96a0487e24f16c6f48b5fb44fafb5 /src/input_common/main.cpp
parentcommon/input: Pass ParamPackage by const reference in CreateDevice (diff)
downloadyuzu-2ec7d0b5fda0fe6cbafcc235e3d8cc91b0dc81e0.tar.gz
yuzu-2ec7d0b5fda0fe6cbafcc235e3d8cc91b0dc81e0.tar.xz
yuzu-2ec7d0b5fda0fe6cbafcc235e3d8cc91b0dc81e0.zip
common/input: Add helpers functions for creating input and output devices
Avoids the redundancy of needing to explictly specify the common namespace and the type.
Diffstat (limited to 'src/input_common/main.cpp')
-rw-r--r--src/input_common/main.cpp102
1 files changed, 43 insertions, 59 deletions
diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp
index 76df133f3..baeed2e02 100644
--- a/src/input_common/main.cpp
+++ b/src/input_common/main.cpp
@@ -33,129 +33,113 @@ struct InputSubsystem::Impl {
33 keyboard->SetMappingCallback(mapping_callback); 33 keyboard->SetMappingCallback(mapping_callback);
34 keyboard_factory = std::make_shared<InputFactory>(keyboard); 34 keyboard_factory = std::make_shared<InputFactory>(keyboard);
35 keyboard_output_factory = std::make_shared<OutputFactory>(keyboard); 35 keyboard_output_factory = std::make_shared<OutputFactory>(keyboard);
36 Common::Input::RegisterFactory<Common::Input::InputDevice>(keyboard->GetEngineName(), 36 Common::Input::RegisterInputFactory(keyboard->GetEngineName(), keyboard_factory);
37 keyboard_factory); 37 Common::Input::RegisterOutputFactory(keyboard->GetEngineName(), keyboard_output_factory);
38 Common::Input::RegisterFactory<Common::Input::OutputDevice>(keyboard->GetEngineName(),
39 keyboard_output_factory);
40 38
41 mouse = std::make_shared<Mouse>("mouse"); 39 mouse = std::make_shared<Mouse>("mouse");
42 mouse->SetMappingCallback(mapping_callback); 40 mouse->SetMappingCallback(mapping_callback);
43 mouse_factory = std::make_shared<InputFactory>(mouse); 41 mouse_factory = std::make_shared<InputFactory>(mouse);
44 mouse_output_factory = std::make_shared<OutputFactory>(mouse); 42 mouse_output_factory = std::make_shared<OutputFactory>(mouse);
45 Common::Input::RegisterFactory<Common::Input::InputDevice>(mouse->GetEngineName(), 43 Common::Input::RegisterInputFactory(mouse->GetEngineName(), mouse_factory);
46 mouse_factory); 44 Common::Input::RegisterOutputFactory(mouse->GetEngineName(), mouse_output_factory);
47 Common::Input::RegisterFactory<Common::Input::OutputDevice>(mouse->GetEngineName(),
48 mouse_output_factory);
49 45
50 touch_screen = std::make_shared<TouchScreen>("touch"); 46 touch_screen = std::make_shared<TouchScreen>("touch");
51 touch_screen_factory = std::make_shared<InputFactory>(touch_screen); 47 touch_screen_factory = std::make_shared<InputFactory>(touch_screen);
52 Common::Input::RegisterFactory<Common::Input::InputDevice>(touch_screen->GetEngineName(), 48 Common::Input::RegisterInputFactory(touch_screen->GetEngineName(), touch_screen_factory);
53 touch_screen_factory);
54 49
55 gcadapter = std::make_shared<GCAdapter>("gcpad"); 50 gcadapter = std::make_shared<GCAdapter>("gcpad");
56 gcadapter->SetMappingCallback(mapping_callback); 51 gcadapter->SetMappingCallback(mapping_callback);
57 gcadapter_input_factory = std::make_shared<InputFactory>(gcadapter); 52 gcadapter_input_factory = std::make_shared<InputFactory>(gcadapter);
58 gcadapter_output_factory = std::make_shared<OutputFactory>(gcadapter); 53 gcadapter_output_factory = std::make_shared<OutputFactory>(gcadapter);
59 Common::Input::RegisterFactory<Common::Input::InputDevice>(gcadapter->GetEngineName(), 54 Common::Input::RegisterInputFactory(gcadapter->GetEngineName(), gcadapter_input_factory);
60 gcadapter_input_factory); 55 Common::Input::RegisterOutputFactory(gcadapter->GetEngineName(), gcadapter_output_factory);
61 Common::Input::RegisterFactory<Common::Input::OutputDevice>(gcadapter->GetEngineName(),
62 gcadapter_output_factory);
63 56
64 udp_client = std::make_shared<CemuhookUDP::UDPClient>("cemuhookudp"); 57 udp_client = std::make_shared<CemuhookUDP::UDPClient>("cemuhookudp");
65 udp_client->SetMappingCallback(mapping_callback); 58 udp_client->SetMappingCallback(mapping_callback);
66 udp_client_input_factory = std::make_shared<InputFactory>(udp_client); 59 udp_client_input_factory = std::make_shared<InputFactory>(udp_client);
67 udp_client_output_factory = std::make_shared<OutputFactory>(udp_client); 60 udp_client_output_factory = std::make_shared<OutputFactory>(udp_client);
68 Common::Input::RegisterFactory<Common::Input::InputDevice>(udp_client->GetEngineName(), 61 Common::Input::RegisterInputFactory(udp_client->GetEngineName(), udp_client_input_factory);
69 udp_client_input_factory); 62 Common::Input::RegisterOutputFactory(udp_client->GetEngineName(),
70 Common::Input::RegisterFactory<Common::Input::OutputDevice>(udp_client->GetEngineName(), 63 udp_client_output_factory);
71 udp_client_output_factory);
72 64
73 tas_input = std::make_shared<TasInput::Tas>("tas"); 65 tas_input = std::make_shared<TasInput::Tas>("tas");
74 tas_input->SetMappingCallback(mapping_callback); 66 tas_input->SetMappingCallback(mapping_callback);
75 tas_input_factory = std::make_shared<InputFactory>(tas_input); 67 tas_input_factory = std::make_shared<InputFactory>(tas_input);
76 tas_output_factory = std::make_shared<OutputFactory>(tas_input); 68 tas_output_factory = std::make_shared<OutputFactory>(tas_input);
77 Common::Input::RegisterFactory<Common::Input::InputDevice>(tas_input->GetEngineName(), 69 Common::Input::RegisterInputFactory(tas_input->GetEngineName(), tas_input_factory);
78 tas_input_factory); 70 Common::Input::RegisterOutputFactory(tas_input->GetEngineName(), tas_output_factory);
79 Common::Input::RegisterFactory<Common::Input::OutputDevice>(tas_input->GetEngineName(),
80 tas_output_factory);
81 71
82 camera = std::make_shared<Camera>("camera"); 72 camera = std::make_shared<Camera>("camera");
83 camera->SetMappingCallback(mapping_callback); 73 camera->SetMappingCallback(mapping_callback);
84 camera_input_factory = std::make_shared<InputFactory>(camera); 74 camera_input_factory = std::make_shared<InputFactory>(camera);
85 camera_output_factory = std::make_shared<OutputFactory>(camera); 75 camera_output_factory = std::make_shared<OutputFactory>(camera);
86 Common::Input::RegisterFactory<Common::Input::InputDevice>(camera->GetEngineName(), 76 Common::Input::RegisterInputFactory(camera->GetEngineName(), camera_input_factory);
87 camera_input_factory); 77 Common::Input::RegisterOutputFactory(camera->GetEngineName(), camera_output_factory);
88 Common::Input::RegisterFactory<Common::Input::OutputDevice>(camera->GetEngineName(),
89 camera_output_factory);
90 78
91 virtual_amiibo = std::make_shared<VirtualAmiibo>("virtual_amiibo"); 79 virtual_amiibo = std::make_shared<VirtualAmiibo>("virtual_amiibo");
92 virtual_amiibo->SetMappingCallback(mapping_callback); 80 virtual_amiibo->SetMappingCallback(mapping_callback);
93 virtual_amiibo_input_factory = std::make_shared<InputFactory>(virtual_amiibo); 81 virtual_amiibo_input_factory = std::make_shared<InputFactory>(virtual_amiibo);
94 virtual_amiibo_output_factory = std::make_shared<OutputFactory>(virtual_amiibo); 82 virtual_amiibo_output_factory = std::make_shared<OutputFactory>(virtual_amiibo);
95 Common::Input::RegisterFactory<Common::Input::InputDevice>(virtual_amiibo->GetEngineName(), 83 Common::Input::RegisterInputFactory(virtual_amiibo->GetEngineName(),
96 virtual_amiibo_input_factory); 84 virtual_amiibo_input_factory);
97 Common::Input::RegisterFactory<Common::Input::OutputDevice>(virtual_amiibo->GetEngineName(), 85 Common::Input::RegisterOutputFactory(virtual_amiibo->GetEngineName(),
98 virtual_amiibo_output_factory); 86 virtual_amiibo_output_factory);
99 87
100#ifdef HAVE_SDL2 88#ifdef HAVE_SDL2
101 sdl = std::make_shared<SDLDriver>("sdl"); 89 sdl = std::make_shared<SDLDriver>("sdl");
102 sdl->SetMappingCallback(mapping_callback); 90 sdl->SetMappingCallback(mapping_callback);
103 sdl_input_factory = std::make_shared<InputFactory>(sdl); 91 sdl_input_factory = std::make_shared<InputFactory>(sdl);
104 sdl_output_factory = std::make_shared<OutputFactory>(sdl); 92 sdl_output_factory = std::make_shared<OutputFactory>(sdl);
105 Common::Input::RegisterFactory<Common::Input::InputDevice>(sdl->GetEngineName(), 93 Common::Input::RegisterInputFactory(sdl->GetEngineName(), sdl_input_factory);
106 sdl_input_factory); 94 Common::Input::RegisterOutputFactory(sdl->GetEngineName(), sdl_output_factory);
107 Common::Input::RegisterFactory<Common::Input::OutputDevice>(sdl->GetEngineName(),
108 sdl_output_factory);
109#endif 95#endif
110 96
111 Common::Input::RegisterFactory<Common::Input::InputDevice>( 97 Common::Input::RegisterInputFactory("touch_from_button",
112 "touch_from_button", std::make_shared<TouchFromButton>()); 98 std::make_shared<TouchFromButton>());
113 Common::Input::RegisterFactory<Common::Input::InputDevice>( 99 Common::Input::RegisterInputFactory("analog_from_button",
114 "analog_from_button", std::make_shared<StickFromButton>()); 100 std::make_shared<StickFromButton>());
115 } 101 }
116 102
117 void Shutdown() { 103 void Shutdown() {
118 Common::Input::UnregisterFactory<Common::Input::InputDevice>(keyboard->GetEngineName()); 104 Common::Input::UnregisterInputFactory(keyboard->GetEngineName());
119 Common::Input::UnregisterFactory<Common::Input::OutputDevice>(keyboard->GetEngineName()); 105 Common::Input::UnregisterOutputFactory(keyboard->GetEngineName());
120 keyboard.reset(); 106 keyboard.reset();
121 107
122 Common::Input::UnregisterFactory<Common::Input::InputDevice>(mouse->GetEngineName()); 108 Common::Input::UnregisterInputFactory(mouse->GetEngineName());
123 Common::Input::UnregisterFactory<Common::Input::OutputDevice>(mouse->GetEngineName()); 109 Common::Input::UnregisterOutputFactory(mouse->GetEngineName());
124 mouse.reset(); 110 mouse.reset();
125 111
126 Common::Input::UnregisterFactory<Common::Input::InputDevice>(touch_screen->GetEngineName()); 112 Common::Input::UnregisterInputFactory(touch_screen->GetEngineName());
127 touch_screen.reset(); 113 touch_screen.reset();
128 114
129 Common::Input::UnregisterFactory<Common::Input::InputDevice>(gcadapter->GetEngineName()); 115 Common::Input::UnregisterInputFactory(gcadapter->GetEngineName());
130 Common::Input::UnregisterFactory<Common::Input::OutputDevice>(gcadapter->GetEngineName()); 116 Common::Input::UnregisterOutputFactory(gcadapter->GetEngineName());
131 gcadapter.reset(); 117 gcadapter.reset();
132 118
133 Common::Input::UnregisterFactory<Common::Input::InputDevice>(udp_client->GetEngineName()); 119 Common::Input::UnregisterInputFactory(udp_client->GetEngineName());
134 Common::Input::UnregisterFactory<Common::Input::OutputDevice>(udp_client->GetEngineName()); 120 Common::Input::UnregisterOutputFactory(udp_client->GetEngineName());
135 udp_client.reset(); 121 udp_client.reset();
136 122
137 Common::Input::UnregisterFactory<Common::Input::InputDevice>(tas_input->GetEngineName()); 123 Common::Input::UnregisterInputFactory(tas_input->GetEngineName());
138 Common::Input::UnregisterFactory<Common::Input::OutputDevice>(tas_input->GetEngineName()); 124 Common::Input::UnregisterOutputFactory(tas_input->GetEngineName());
139 tas_input.reset(); 125 tas_input.reset();
140 126
141 Common::Input::UnregisterFactory<Common::Input::InputDevice>(camera->GetEngineName()); 127 Common::Input::UnregisterInputFactory(camera->GetEngineName());
142 Common::Input::UnregisterFactory<Common::Input::OutputDevice>(camera->GetEngineName()); 128 Common::Input::UnregisterOutputFactory(camera->GetEngineName());
143 camera.reset(); 129 camera.reset();
144 130
145 Common::Input::UnregisterFactory<Common::Input::InputDevice>( 131 Common::Input::UnregisterInputFactory(virtual_amiibo->GetEngineName());
146 virtual_amiibo->GetEngineName()); 132 Common::Input::UnregisterOutputFactory(virtual_amiibo->GetEngineName());
147 Common::Input::UnregisterFactory<Common::Input::OutputDevice>(
148 virtual_amiibo->GetEngineName());
149 virtual_amiibo.reset(); 133 virtual_amiibo.reset();
150 134
151#ifdef HAVE_SDL2 135#ifdef HAVE_SDL2
152 Common::Input::UnregisterFactory<Common::Input::InputDevice>(sdl->GetEngineName()); 136 Common::Input::UnregisterInputFactory(sdl->GetEngineName());
153 Common::Input::UnregisterFactory<Common::Input::OutputDevice>(sdl->GetEngineName()); 137 Common::Input::UnregisterOutputFactory(sdl->GetEngineName());
154 sdl.reset(); 138 sdl.reset();
155#endif 139#endif
156 140
157 Common::Input::UnregisterFactory<Common::Input::InputDevice>("touch_from_button"); 141 Common::Input::UnregisterInputFactory("touch_from_button");
158 Common::Input::UnregisterFactory<Common::Input::InputDevice>("analog_from_button"); 142 Common::Input::UnregisterInputFactory("analog_from_button");
159 } 143 }
160 144
161 [[nodiscard]] std::vector<Common::ParamPackage> GetInputDevices() const { 145 [[nodiscard]] std::vector<Common::ParamPackage> GetInputDevices() const {