Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/output/output.c

    rfafb8e5 rca48672  
    11/*
     2 * Copyright (c) 2025 Jiri Svoboda
    23 * Copyright (c) 2011 Martin Decky
    34 * All rights reserved.
     
    3940#include <ipc/output.h>
    4041#include <config.h>
     42#include <vt/vt100.h>
    4143#include "port/ega.h"
    4244#include "port/chardev.h"
     45#include "port/ddev.h"
    4346#include "output.h"
    44 
    45 #define MAX_COLS  128
    46 #define MAX_ROWS  128
    4747
    4848typedef struct {
     
    114114static void srv_get_dimensions(ipc_call_t *icall)
    115115{
    116         sysarg_t cols = MAX_COLS;
    117         sysarg_t rows = MAX_ROWS;
    118 
    119         list_foreach(outdevs, link, outdev_t, dev) {
    120                 cols = min(cols, dev->cols);
    121                 rows = min(rows, dev->rows);
     116        sysarg_t cols = 0;
     117        sysarg_t rows = 0;
     118        bool first;
     119
     120        first = true;
     121        list_foreach(outdevs, link, outdev_t, dev) {
     122                if (first) {
     123                        cols = dev->cols;
     124                        rows = dev->rows;
     125                        first = false;
     126                } else {
     127                        cols = min(cols, dev->cols);
     128                        rows = min(rows, dev->rows);
     129                }
    122130        }
    123131
     
    462470int main(int argc, char *argv[])
    463471{
     472        loc_srv_t *srv;
     473
    464474        if (argc < 2) {
    465475                usage(argv[0]);
     
    471481        /* Register server */
    472482        async_set_fallback_port_handler(client_connection, NULL);
    473         errno_t rc = loc_server_register(NAME);
     483        errno_t rc = loc_server_register(NAME, &srv);
    474484        if (rc != EOK) {
    475485                printf("%s: Unable to register driver\n", NAME);
     
    478488
    479489        service_id_t service_id;
    480         rc = loc_service_register(argv[1], &service_id);
     490        rc = loc_service_register(srv, argv[1], fallback_port_id, &service_id);
    481491        if (rc != EOK) {
     492                loc_server_unregister(srv);
     493
    482494                printf("%s: Unable to register service %s\n", NAME, argv[1]);
    483495                return rc;
     
    486498        if (!config_key_exists("console")) {
    487499                ega_init();
     500#if defined(CONFIG_FB) && !defined(CONFIG_WINSYS)
     501                /*
     502                 * NOTE: We don't have a good way of detecting the absence
     503                 * of a KFB display device at run time because of the
     504                 * asunchronous nature of device discovery
     505                 */
     506                output_ddev_init();
     507#endif
    488508        }
    489509
Note: See TracChangeset for help on using the changeset viewer.