1 /* ______ ___ ___
2 * /\ _ \ /\_ \ /\_ \
3 * \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___
4 * \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\
5 * \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \
6 * \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
7 * \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
8 * /\____/
9 * \_/__/
10 *
11 * Dynamic driver lists shared by Unixy system drivers.
12 *
13 * By Peter Wang.
14 *
15 * See readme.txt for copyright information.
16 */
17
18
19 #include "allegro.h"
20 #include "allegro/internal/aintern.h"
21 #include "allegro/platform/aintunix.h"
22
23
24
25 _DRIVER_INFO *_unix_gfx_driver_list = 0;
26 _DRIVER_INFO *_unix_digi_driver_list = 0;
27 _DRIVER_INFO *_unix_midi_driver_list = 0;
28
29
30
31 /* _unix_driver_lists_init:
32 * Initialise driver lists.
33 */
_unix_driver_lists_init(void)34 void _unix_driver_lists_init(void)
35 {
36 _unix_gfx_driver_list = _create_driver_list();
37 if (_unix_gfx_driver_list)
38 _driver_list_append_list(&_unix_gfx_driver_list, _gfx_driver_list);
39
40 _unix_digi_driver_list = _create_driver_list();
41 if (_unix_digi_driver_list)
42 _driver_list_append_list(&_unix_digi_driver_list, _digi_driver_list);
43
44 _unix_midi_driver_list = _create_driver_list();
45 if (_unix_midi_driver_list)
46 _driver_list_append_list(&_unix_midi_driver_list, _midi_driver_list);
47 }
48
49
50
51 /* _unix_driver_lists_shutdown:
52 * Free driver lists.
53 */
_unix_driver_lists_shutdown(void)54 void _unix_driver_lists_shutdown(void)
55 {
56 if (_unix_gfx_driver_list) {
57 _destroy_driver_list(_unix_gfx_driver_list);
58 _unix_gfx_driver_list = 0;
59 }
60
61 if (_unix_digi_driver_list) {
62 _destroy_driver_list(_unix_digi_driver_list);
63 _unix_digi_driver_list = 0;
64 }
65
66 if (_unix_midi_driver_list) {
67 _destroy_driver_list(_unix_midi_driver_list);
68 _unix_midi_driver_list = 0;
69 }
70 }
71
72
73
74 /* _unix_register_gfx_driver:
75 * Used by modules to register graphics drivers.
76 */
_unix_register_gfx_driver(int id,GFX_DRIVER * driver,int autodetect,int priority)77 void _unix_register_gfx_driver(int id, GFX_DRIVER *driver, int autodetect, int priority)
78 {
79 if (priority)
80 _driver_list_prepend_driver(&_unix_gfx_driver_list, id, driver, autodetect);
81 else
82 _driver_list_append_driver(&_unix_gfx_driver_list, id, driver, autodetect);
83 }
84
85
86
87 /* _unix_register_digi_driver:
88 * Used by modules to register digital sound drivers.
89 */
_unix_register_digi_driver(int id,DIGI_DRIVER * driver,int autodetect,int priority)90 void _unix_register_digi_driver(int id, DIGI_DRIVER *driver, int autodetect, int priority)
91 {
92 if (priority)
93 _driver_list_prepend_driver(&_unix_digi_driver_list, id, driver, autodetect);
94 else
95 _driver_list_append_driver(&_unix_digi_driver_list, id, driver, autodetect);
96 }
97
98
99
100 /* _unix_register_midi_driver:
101 * Used by modules to register MIDI drivers.
102 */
_unix_register_midi_driver(int id,MIDI_DRIVER * driver,int autodetect,int priority)103 void _unix_register_midi_driver(int id, MIDI_DRIVER *driver, int autodetect, int priority)
104 {
105 if (priority)
106 _driver_list_prepend_driver(&_unix_midi_driver_list, id, driver, autodetect);
107 else
108 _driver_list_append_driver(&_unix_midi_driver_list, id, driver, autodetect);
109 }
110
111