Changeset 2049 for Whitix

Show
Ignore:
Timestamp:
05/17/09 10:39:07 (3 years ago)
Author:
mwhitworth
Message:

Start updating Xynth to use dynamic libraries for drivers, remove old configuration code and replace with registry equivalents.

Location:
Whitix/trunk/user/xynth/src/server
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • Whitix/trunk/user/xynth/src/server/Makefile

    r910 r2049  
    44 
    55DIR = src/server/ 
     6 
     7SUBDIR-Y = video/bochs/ 
     8SUBDIR-Y = video/vga/ 
    69 
    710INCDIR += . ../lib ../../../libc/include ../../../posix/include \ 
     
    4750CFLAGS-$(VIDEO_VGA)       += -I../../../../../librtl -I../../../../../libc/include -I../../../../../posix/include 
    4851 
    49 OBJS-$(VIDEO_BOCHS)        += video/bochs/server.o 
    50 CFLAGS-$(VIDEO_BOCHS)     += -I../../../../../librtl -I../../../../../libc/include -I../../../../../posix/include 
    51  
    5252OBJS-$(VIDEO_HELPER)      += video/helper/console.o video/helper/irman.o video/helper/kbd.o video/helper/modes.o \ 
    5353                             video/helper/mouse.o video/helper/mtrr.o video/helper/tscreen.o 
     
    7878OBJS       += $(OBJS-Y) 
    7979EXTRA_OBJS += $(EXTRA_OBJS-Y) 
    80 LDFLAGS    += -nostdlib -pthread -lstdc -lposix -lm  ../../../libc/init/init.o -lxynth -lpthread -ldl -llinker -lregistry -lnetwork -dynamic-linker=/System/Runtime/liblinker.so 
     80LDFLAGS    += -nostdlib -pthread -lstdc -lposix -lm  ../../../libc/init/init.o -lxynth -lpthread -ldl -llinker -lregistry -lnetwork -lfile -dynamic-linker=/System/Runtime/liblinker.so 
    8181TARGET      = $(TARGET-Y) 
    8282 
  • Whitix/trunk/user/xynth/src/server/Makefile.depend

    r1668 r2049  
    8787  ../../../posix/include/sys/un.h ../../../posix/include/netinet/in.h \ 
    8888  ../../../posix/include/arpa/inet.h server.h \ 
    89   ../../../sdk/include/registry.h ../../../posix/include/fcntl.h \ 
    90   ../../../posix/include/sys/stat.h ../../../libc/include/syscalls.h \ 
    91   ../../../libc/include/sysdefs.h ../../../posix/include/sys/shm.h \ 
    92   ../../../posix/include/sys/ipc.h 
     89  ../../../sdk/include/registry.h ../../../sdk/include/file.h \ 
     90  ../../../posix/include/fcntl.h ../../../posix/include/sys/stat.h \ 
     91  ../../../libc/include/syscalls.h ../../../libc/include/sysdefs.h \ 
     92  ../../../posix/include/sys/shm.h ../../../posix/include/sys/ipc.h 
    9393socket.o: socket.c ../../../posix/include/sys/stat.h \ 
    9494  ../../../posix/include/sys/time.h ../../../libc/include/time.h \ 
     
    211211  server.h video/vga/vga.h ../../../libc/include/syscalls.h \ 
    212212  ../../../libc/include/sysdefs.h 
    213 video/bochs/server.o: video/bochs/server.c \ 
    214   video/bochs/../../../lib/xynth_.h ../../../libc/include/stdio.h \ 
    215   ../../../libc/include/errno.h ../../../libc/include/stddef.h \ 
    216   ../../../libc/include/string.h ../../../libc/include/stdarg.h \ 
    217   ../../../libc/include/stdlib.h ../../../libc/include/limits.h \ 
    218   ../../../posix/include/unistd.h ../../../posix/include/sys/select.h \ 
    219   ../../../posix/include/sys/types.h ../../../posix/include/sys/time.h \ 
    220   ../../../libc/include/time.h ../../../posix/include/sys/resource.h \ 
    221   ../../../posix/include/sys/wait.h ../../../posix/include/signal.h \ 
    222   ../../../posix/include/sys/ucontext.h ../../../posix/include/getopt.h \ 
    223   ../../../libc/include/stdint.h ../../../libc/include/inttypes.h \ 
    224   ../../../libc/include/ctype.h video/bochs/../../../lib/xynth.h \ 
    225   ../../../posix/include/sys/poll.h ../../../posix/include/sys/socket.h \ 
    226   ../../../posix/include/sys/un.h ../../../posix/include/netinet/in.h \ 
    227   ../../../posix/include/arpa/inet.h server.h \ 
    228   ../../../libc/include/syscalls.h ../../../libc/include/sysdefs.h 
  • Whitix/trunk/user/xynth/src/server/server.c

    r1801 r2049  
    1818 
    1919#include <registry.h> 
     20#include <file.h> 
    2021 
    2122#if defined(PLATFORM_LINUX) 
     
    2526#include <sys/shm.h> 
    2627 
    27 #if defined(VIDEO_BOCHS) 
    28         extern s_video_driver_t s_video_bochs; 
    29 #endif 
    30  
    31 #if defined(VIDEO_VGA) 
    32         extern s_video_driver_t s_video_vga; 
    33 #endif 
    34  
    35 static s_video_driver_t *video_drivers[] = { 
    36 #if defined(VIDEO_BOCHS) 
    37         &s_video_bochs, 
    38 #endif 
    39 #if defined(VIDEO_VGA) 
    40         &s_video_vga, 
    41 #endif 
    42         NULL, 
    43 }; 
     28/* dl handle of the driver. */ 
     29void* driverLibrary; 
    4430 
    4531int s_server_cfg_check_digit (char *ptr, char *digits) 
     
    7662} 
    7763 
    78 int BlazeServerConfig(s_server_conf_t* config) 
     64int BlazeServerConfigRead(s_server_conf_t *config) 
    7965{ 
    8066        /* Open the registry and read the configuration methodically. */ 
    8167        struct Registry registry; 
    8268        struct RegKeySet keySet; 
    83          
    84         RegRegistryOpen(NULL, &registry); 
     69        char* str = NULL, *mouseType; 
     70         
     71        if (RegRegistryOpen(NULL, &registry)) 
     72                debugf(DSER | DFAT, "failed to open registry"); 
    8573         
    8674        /* Video. */ 
    87         RegKeySetOpen(&registry, "/Applications/Xynth/Video", 0, &keySet); 
    88          
    89         RegKeyReadString(&keySet, "driver", &config->general.driver, NULL); 
    90          
     75        if (RegKeySetOpen(&registry, "/Applications/Xynth/Video", 0, &keySet)) 
     76                debugf(DSER | DFAT, "failed to open video keyset"); 
     77         
     78        if (RegKeyReadString(&keySet, "driver", &str, NULL)) 
     79                debugf(DSER | DFAT, "failed to read driver key"); 
     80                 
     81        config->general.driver = str; 
     82         
     83        /* TODO: Read mode. */ 
     84         
     85        RegKeySetClose(&keySet); 
     86                 
     87        /* Input devices */ 
     88        if (RegKeySetOpen(&registry, "/Applications/Xynth/Input", 0, &keySet)) 
     89                debugf(DSER | DFAT, "failed to open input keyset"); 
     90 
     91        str = NULL; 
     92 
     93        if (RegKeyReadString(&keySet, "mouseType", &str, NULL)) 
     94                debugf(DSER | DFAT, "failed to read mouse type key"); 
     95                                 
     96        config->mouse.type = str; 
     97         
     98        str = NULL; 
     99         
     100        if (RegKeyReadString(&keySet, "kbdType", &str, NULL)) 
     101                debugf(DSER | DFAT, "failed to read keyboard type key"); 
     102 
     103        RegKeySetClose(&keySet); 
     104                 
    91105        RegRegistryClose(&registry); 
    92 } 
    93  
     106         
     107        return 0; 
     108} 
     109 
     110/* TODO: Don't need config parameter. */ 
     111int BlazeLoadVideoDriver(char* driverName) 
     112{ 
     113        char name[128]; 
     114        s_video_driver_t* driverInfo; 
     115        int secondTime = 0; 
     116                         
     117        snprintf(name, 128, "/Applications/Xynth/Drivers/%s", driverName); 
     118 
     119        /* FIXME: Remove soon. */ 
     120        SysIoAccess(1); 
     121 
     122        driverLibrary = dlopen(name, 0); 
     123         
     124        if (!driverLibrary) 
     125                debugf(DSER | DFAT, "failed to open video driver"); 
     126                 
     127        driverInfo = dlsym(driverLibrary, "videoDriver"); 
     128         
     129        if (!driverInfo) 
     130                debugf(DSER | DFAT, "invalid video driver"); 
     131         
     132        if (driverInfo->probe) 
     133                if (!driverInfo->probe(server)) 
     134                        return 1;                
     135         
     136        /* Call the start function for the video driver; it sets the resolution 
     137         * to the values specified in the configuration. */ 
     138        if (driverInfo->server_init) 
     139        { 
     140                if ((driverInfo->server_init(server) < 0)) 
     141                        return 1; 
     142        }else 
     143                debugf(DSER | DFAT, "invalid video driver"); 
     144 
     145        server->driver = driverInfo; 
     146 
     147        return 0; 
     148} 
     149 
     150/* TODO: Load the vga driver if all else fails? */ 
    94151int s_server_cfg (s_server_conf_t *config) 
    95152{ 
    96         int ret = 0; 
    97          
     153        BlazeServerConfigRead(config); 
     154         
     155        if (strlen(config->general.driver) == 0) 
     156        { 
     157                char* name; 
     158                struct FileDirectory* dir; 
     159                struct FileDirEnt* ent; 
     160                 
     161                dir = FileDirOpen("/Applications/Xynth/Drivers/"); 
     162                 
     163                while ( ( ent = FileDirNext(dir) ) ) 
     164                { 
     165                        name = ent->name; 
     166                         
     167                        if (name[0] == '.' || !strcmp(name, "vga.so")) 
     168                                continue; 
     169                         
     170                        if (!BlazeLoadVideoDriver(name)) 
     171                                break; 
     172                } 
     173                 
     174                if (!ent && BlazeLoadVideoDriver("vga.so")) 
     175                { 
     176                        debugf(DSER | DFAT, "failed to find a valid video driver.");                             
     177                } 
     178                 
     179                FileDirClose(dir); 
     180         
     181        }else{ 
     182                char buffer[256]; 
     183                strncpy(buffer, config->general.driver, 250); 
     184                strcat(buffer, ".so"); 
     185                BlazeLoadVideoDriver(config->general.driver); 
     186        } 
     187         
     188        return 0; 
     189} 
     190 
     191int s_server_init (void) 
     192{ 
    98193        int i; 
    99         int j; 
    100         s_config_t *cfg; 
    101         s_config_cat_t *cat; 
    102         s_config_var_t *var; 
    103  
    104         s_config_init(&cfg); 
    105         if (s_config_parse(cfg, CONFDIR "xynth.conf")) { 
    106                 debugf(DSER, "Configuration file parsing failed (%s)", CONFDIR "xynth.conf"); 
    107                 s_config_uninit(cfg); 
    108                 return -1; 
    109         } 
    110  
    111         i = 0; 
    112         while (!s_list_eol(cfg->category, i)) { 
    113                 cat = s_list_get(cfg->category, i++); 
    114                 j = 0; 
    115                 while (!s_list_eol(cat->variable, j)) { 
    116                         var = s_list_get(cat->variable, j++); 
    117                         if (strcasecmp(cat->name, "general") == 0) { 
    118                                 if (strcasecmp(var->name, "driver") == 0) { 
    119                                         config->general.driver = strdup(var->value); 
    120                                 } else if (strcasecmp(var->name, "mode") == 0) { 
    121                                         config->general.mode = strdup(var->value); 
    122                                 } else if (strcasecmp(var->name, "rotate") == 0) { 
    123                                         config->general.rotate = atoi(var->value); 
    124                                 } 
    125                         } else if (strcasecmp(cat->name, "mouse") == 0) { 
    126                                 if (strcasecmp(var->name, "type") == 0) { 
    127                                         config->mouse.type = strdup(var->value); 
    128                                 } else if (strcasecmp(var->name, "device") == 0) { 
    129                                         config->mouse.device = strdup(var->value); 
    130                                 } else if (strcasecmp(var->name, "samplerate") == 0) { 
    131                                         config->mouse.samplerate = atoi(var->value); 
    132                                 } else if (strcasecmp(var->name, "scale") == 0) { 
    133                                         config->mouse.scale = atoi(var->value); 
    134                                         if (config->mouse.scale == 0) { 
    135                                                 config->mouse.scale = 1; 
    136                                         } 
    137                                 } 
    138                         } else if (strcasecmp(cat->name, "keyboard") == 0) { 
    139                                 if (strcasecmp(var->name, "keyboard") == 0) { 
    140                                         config->keyboard.keyboard = strdup(var->value); 
    141                                 } 
    142                         }else if (strcasecmp(cat->name, "monitor") == 0) { 
    143                                 char *ptr; 
    144                                 char *nptr; 
    145                                 char *nptr_; 
    146                                 char digits[] = ".0123456789"; 
    147                                 if (strcasecmp(var->name, "horizsync") == 0) { 
    148                                         nptr = strdup(var->value); 
    149                                         nptr_ = nptr; 
    150                                         ptr = s_server_cfg_token(&nptr); 
    151                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    152                                                 config->monitor.horizsync_min = atof(ptr); 
    153                                         } else { 
    154                                                 goto hs_bad; 
    155                                         } 
    156                                         ptr = s_server_cfg_token(&nptr); 
    157                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    158                                                 config->monitor.horizsync_max = atof(ptr); 
    159                                         } else { 
    160 hs_bad:                                         debugf(DSER, "Illegal horizsync setting. Correct usage: horizsync min_kHz max_kHz\n"); 
    161                                                 ret = -1; 
    162                                         } 
    163                                         s_free(nptr_); 
    164                                 } else if (strcasecmp(var->name, "vertrefresh") == 0) { 
    165                                         nptr = strdup(var->value); 
    166                                         nptr_ = nptr; 
    167                                         ptr = s_server_cfg_token(&nptr); 
    168                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    169                                                 config->monitor.vertrefresh_min = atof(ptr); 
    170                                         } else { 
    171                                                 goto vr_bad; 
    172                                         } 
    173                                         ptr = s_server_cfg_token(&nptr); 
    174                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    175                                                 config->monitor.vertrefresh_max = atof(ptr); 
    176                                         } else { 
    177 vr_bad:                                         debugf(DSER, "Illegal vertrefresh setting. Correct usage: vertrefresh min_Hz max_Hz\n"); 
    178                                                 ret = -1; 
    179                                         } 
    180                                         s_free(nptr_); 
    181                                 } else if (strcasecmp(var->name, "timing") == 0) { 
    182                                         nptr = strdup(var->value); 
    183                                         nptr_ = nptr; 
    184                                         ptr = s_server_cfg_token(&nptr); 
    185                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    186                                                 config->monitor.pixclock = atoi(ptr); 
    187                                         } else { 
    188                                                 goto tm_bad; 
    189                                         } 
    190                                         ptr = s_server_cfg_token(&nptr); 
    191                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    192                                                 config->monitor.left_margin = atoi(ptr); 
    193                                         } else { 
    194                                                 goto tm_bad; 
    195                                         } 
    196                                         ptr = s_server_cfg_token(&nptr); 
    197                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    198                                                 config->monitor.right_margin = atoi(ptr); 
    199                                         } else { 
    200                                                 goto tm_bad; 
    201                                         } 
    202                                         ptr = s_server_cfg_token(&nptr); 
    203                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    204                                                 config->monitor.upper_margin = atoi(ptr); 
    205                                         } else { 
    206                                                 goto tm_bad; 
    207                                         } 
    208                                         ptr = s_server_cfg_token(&nptr); 
    209                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    210                                                 config->monitor.lower_margin = atoi(ptr); 
    211                                         } else { 
    212                                                 goto tm_bad; 
    213                                         } 
    214                                         ptr = s_server_cfg_token(&nptr); 
    215                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    216                                                 config->monitor.hsync_len = atoi(ptr); 
    217                                         } else { 
    218                                                 goto tm_bad; 
    219                                         } 
    220                                         ptr = s_server_cfg_token(&nptr); 
    221                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    222                                                 config->monitor.vsync_len = atoi(ptr); 
    223                                         } else { 
    224                                                 goto tm_bad; 
    225                                         } 
    226                                         ptr = s_server_cfg_token(&nptr); 
    227                                         if (s_server_cfg_check_digit(ptr, digits)) { 
    228                                                 config->monitor.vmode = atoi(ptr); 
    229                                         } else { 
    230 tm_bad:                                         debugf(DSER, "Illegal timing setting. Correct usage: vertrefresh pixclock left_margin right_margin upper_margin lower_margin hsync_len vsync_len vmode\n"); 
    231                                                 ret = -1; 
    232                                         } 
    233                                         s_free(nptr_); 
    234                                 } 
    235                         } 
    236                 } 
    237         } 
    238         s_config_uninit(cfg); 
    239         { 
    240                 s_video_driver_t **vd; 
    241                 for (vd = video_drivers; *vd; vd++) { 
    242                         if (strcmp((*vd)->driver, config->general.driver) == 0) { 
    243                                 if ((strlen((*vd)->driver) >= S_FNAME_MAX) || 
    244                                     (strlen((*vd)->device) >= S_FNAME_MAX)) { 
    245                                         debugf(DSER, "driver:%s, or device:%s name is too long (> %d). skipping", (*vd)->driver, (*vd)->device, S_FNAME_MAX); 
    246                                         continue; 
    247                                 } 
    248                                 server->driver = *vd; 
    249                         } 
    250                 } 
    251                 if (server->driver == NULL) { 
    252                         debugf(DSER, "Unknown video driver : %s", config->general.driver); 
    253                         ret = -1; 
    254                 } 
    255         } 
    256  
    257         return ret; 
    258 } 
    259  
    260 int s_server_init (void) 
    261 { 
    262         int i; 
    263         int mode; 
    264194        void *addr; 
    265195        s_server_conf_t config; 
     
    291221                goto err0; 
    292222        } 
    293          
    294         BlazeServerConfig(&config); 
    295  
    296         server->window->surface->buf->x = 0; 
    297         server->window->surface->buf->y = 0; 
     223 
     224        server->window->surface->buf->x = 0; 
     225        server->window->surface->buf->y = 0; 
    298226        server->window->surface->buf->w = 0; 
    299227        server->window->surface->buf->h = 0; 
     
    301229        server->window->surface->linear_buf_pitch = 0; 
    302230        server->window->surface->linear_buf_height = 0; 
    303          
    304         if (server->driver->server_init != NULL) { 
    305                 mode = server->driver->server_init(&config); 
    306                 if (mode < 0) { 
    307                         debugf(DSER, "server->driver->server_init(&config) failed"); 
    308                         goto err0; 
    309                 } 
    310         } else { 
    311                 debugf(DSER, "server->driver->server_init == NULL"); 
    312                 goto err0; 
    313         } 
    314231 
    315232        server->window->surface->bluemask = ((1 << server->window->surface->bluelength) - 1) << server->window->surface->blueoffset; 
    316233        server->window->surface->greenmask = ((1 << server->window->surface->greenlength) - 1) << server->window->surface->greenoffset; 
    317234        server->window->surface->redmask = ((1 << server->window->surface->redlength) - 1) << server->window->surface->redoffset; 
     235 
     236        /* For now. */ 
     237        config.general.rotate = 0; 
    318238 
    319239        if (config.general.rotate) { 
     
    367287 
    368288        server->window->surface->mode = SURFACE_REAL; 
    369         server->mode = mode; 
    370289 
    371290    s_event_init(&server->window->event); 
     
    383302 
    384303        s_free(config.general.driver); 
    385         s_free(config.general.mode); 
     304//      s_free(config.general.mode); 
    386305        s_free(config.mouse.type); 
    387306        s_free(config.mouse.device); 
    388307        s_free(config.keyboard.keyboard); 
     308         
     309#if 0 
    389310        s_free(config.irr.type); 
    390311        s_free(config.irr.device); 
    391312        s_free(config.irr.brate); 
     313#endif 
    392314 
    393315        server->window->running = 1; 
     
    396318 
    397319err0:   s_free(config.general.driver); 
    398         s_free(config.general.mode); 
     320//      s_free(config.general.mode); 
    399321        s_free(config.mouse.type); 
    400322        s_free(config.mouse.device); 
  • Whitix/trunk/user/xynth/src/server/server.h

    r910 r2049  
    5959        char *device; 
    6060 
    61         int (*server_init) (s_server_conf_t *cfg); 
     61        int (*server_init) (s_server_t* server); 
    6262        void (*server_uninit) (void); 
     63         
     64        /* Returns 1 if there is a device the driver can use, 0 otherwise. */ 
     65        int (*probe)(s_server_t* server); 
    6366 
    6467        void *driver_data; 
  • Whitix/trunk/user/xynth/src/server/video/bochs/server.c

    r1668 r2049  
    1313#define VBE_DISPI_DATA          0x01CF 
    1414 
     15#define VBE_DISPI_ID4           0xB0C4 
     16 
     17#define VBE_DISPI_ID            0x0 
    1518#define VBE_DISPI_XRES          0x1 
    1619#define VBE_DISPI_YRES          0x2 
     
    2427#define outw(port,data) asm volatile("outw %%ax,%%dx"::"d"(port),"a"(data)) 
    2528 
     29static unsigned short inw(unsigned short port) 
     30{ 
     31        unsigned short retVal; 
     32        asm volatile("inw %%dx,%%ax" : "=a"(retVal) : "d"(port)); 
     33        return retVal; 
     34} 
     35 
    2636extern int noGraphics; 
    2737 
    28 void VbeWrite(unsigned short index, unsigned short value) 
     38static unsigned short VbeRead(unsigned short index) 
     39{ 
     40        outw(VBE_DISPI_INDEX, index); 
     41         
     42        return inw(VBE_DISPI_DATA); 
     43} 
     44 
     45static void VbeWrite(unsigned short index, unsigned short value) 
    2946{ 
    3047        outw(VBE_DISPI_INDEX, index); 
     
    3249} 
    3350 
    34 void VbeSetMode(unsigned short width, unsigned short height, unsigned short bits) 
     51static int VbeSetMode(unsigned short width, unsigned short height, unsigned short bits) 
    3552{ 
    3653        VbeWrite(VBE_DISPI_ENABLE, VBE_DISPI_DISABLED); 
     
    3956        VbeWrite(VBE_DISPI_BPP, bits); 
    4057        VbeWrite(VBE_DISPI_ENABLE, VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED); 
     58         
     59        return 0; 
    4160} 
    4261 
    43 int s_video_bochs_server_init (s_server_conf_t *cfg) 
     62int s_video_bochs_server_init (s_server_t* server) 
    4463{ 
    45         SysIoAccess(1); 
     64        if (VbeSetMode(BOCHS_WIDTH, BOCHS_HEIGHT, BOCHS_BPP)) 
     65                        return -1; 
     66                         
     67        server->window->surface->width=BOCHS_WIDTH; 
    4668 
    47         if (!noGraphics) 
    48                 VbeSetMode(BOCHS_WIDTH, BOCHS_HEIGHT, BOCHS_BPP); 
    49  
    50         server->window->surface->width=BOCHS_WIDTH; 
    5169        server->window->surface->height=BOCHS_HEIGHT; 
    5270        server->window->surface->bytesperpixel=BOCHS_BPP/8; 
     
    6078        server->window->surface->redlength = 8; 
    6179 
    62         int memFd=SysOpen("/System/Devices/Special/Memory", _SYS_FILE_READ | _SYS_FILE_WRITE, 0); 
     80        int memFd = SysOpen("/System/Devices/Special/Memory", _SYS_FILE_READ | _SYS_FILE_WRITE, 0); 
    6381 
    6482        server->window->surface->linear_mem_size=server->window->surface->width*server->window->surface->height*server->window->surface->bytesperpixel; 
     
    8098} 
    8199 
    82 s_video_driver_t s_video_bochs = { 
     100int BochsProbe(s_server_t* server) 
     101{ 
     102        if (VbeRead(VBE_DISPI_ID) != VBE_DISPI_ID4) 
     103                return 0; 
     104                 
     105        return 1; 
     106} 
     107 
     108s_video_driver_t videoDriver = { 
    83109        "bochs", 
    84110        "/System/Devices/Special/Memory", 
    85111        s_video_bochs_server_init, 
    86112        s_video_bochs_server_uninit, 
     113        BochsProbe, 
    87114}; 
  • Whitix/trunk/user/xynth/src/server/video/vga/server.c

    r1668 r2049  
    161161} 
    162162 
    163 int s_video_vga_server_init (s_server_conf_t *cfg) 
     163/* VGA is the lowest common denominator for video output. Every PC supports it. */ 
     164int VgaProbe(s_server_t* server) 
     165{ 
     166        return 1; 
     167} 
     168 
     169int s_video_vga_server_init (s_server_t* server) 
    164170{ 
    165171        printf("Loading VGA driver.\n"); 
     
    195201        server->window->surface->linear_mem_size=VGA_SIZE; 
    196202 
    197         if (!noGraphics) 
    198                 VgaInit(); 
     203        VgaInit(); 
    199204 
    200205        return 0; 
    201206} 
    202207 
    203 s_video_driver_t s_video_vga = { 
     208s_video_driver_t videoDriver = { 
    204209        "vga", 
    205210        "/System/Devices/Special/Memory", 
    206211        s_video_vga_server_init, 
     212        VgaProbe, 
    207213        s_video_vga_server_uninit, 
    208214};