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