Changeset 50cfa6c in mainline for uspace/srv


Ignore:
Timestamp:
2009-07-14T21:25:13Z (16 years ago)
Author:
Jiri Svoboda <jirik.svoboda@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
bf5443d
Parents:
7d88587
Message:

Method for getting console color capabilities. Use to fix invisible tetris pieces.

Location:
uspace/srv
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/console/console.c

    r7d88587 r50cfa6c  
    7070        ipcarg_t cols;  /**< Framebuffer columns */
    7171        ipcarg_t rows;  /**< Framebuffer rows */
     72        int color_cap;  /**< Color capabilities (FB_CCAP_xxx) */
    7273} fb_info;
    7374
     
    171172                break;
    172173        }
     174}
     175
     176int ccap_fb_to_con(int ccap_fb, int *ccap_con)
     177{
     178        switch (ccap_fb) {
     179        case FB_CCAP_NONE: *ccap_con = CONSOLE_CCAP_NONE; break;
     180        case FB_CCAP_STYLE: *ccap_con = CONSOLE_CCAP_STYLE; break;
     181        case FB_CCAP_INDEXED: *ccap_con = CONSOLE_CCAP_INDEXED; break;
     182        case FB_CCAP_RGB: *ccap_con = CONSOLE_CCAP_RGB; break;
     183        default: return EINVAL;
     184        }
     185
     186        return EOK;
    173187}
    174188
     
    527541        ipcarg_t arg2;
    528542        ipcarg_t arg3;
     543
     544        int cons_ccap;
     545        int rc;
    529546       
    530547        async_serialize_start();
     
    589606                        arg2 = fb_info.rows;
    590607                        break;
     608                case CONSOLE_GET_COLOR_CAP:
     609                        rc = ccap_fb_to_con(fb_info.color_cap, &cons_ccap);
     610                        if (rc != EOK) {
     611                                ipc_answer_0(callid, rc);
     612                                continue;
     613                        }
     614                        arg1 = cons_ccap;
     615                        break;
    591616                case CONSOLE_SET_STYLE:
    592617                        fb_pending_flush();
     
    640665static bool console_init(void)
    641666{
     667        ipcarg_t color_cap;
     668
    642669        /* Connect to keyboard driver */
    643670        kbd_phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_KEYBOARD, 0, 0);
     
    675702        async_req_0_0(fb_info.phone, FB_FLUSH);
    676703        async_req_0_2(fb_info.phone, FB_GET_CSIZE, &fb_info.cols, &fb_info.rows);
     704        async_req_0_1(fb_info.phone, FB_GET_COLOR_CAP, &color_cap);
     705        fb_info.color_cap = color_cap;
    677706       
    678707        /* Set up shared memory buffer. */
  • uspace/srv/fb/ega.c

    r7d88587 r50cfa6c  
    320320                        ipc_answer_2(callid, EOK, scr_width, scr_height);
    321321                        continue;
     322                case FB_GET_COLOR_CAP:
     323                        ipc_answer_1(callid, EOK, FB_CCAP_INDEXED);
     324                        continue;
    322325                case FB_CLEAR:
    323326                        clrscr();
  • uspace/srv/fb/fb.c

    r7d88587 r50cfa6c  
    16481648                        ipc_answer_2(callid, EOK, vport->cols, vport->rows);
    16491649                        continue;
     1650                case FB_GET_COLOR_CAP:
     1651                        ipc_answer_1(callid, EOK, FB_CCAP_RGB);
     1652                        continue;
    16501653                case FB_SCROLL:
    16511654                        scroll = IPC_GET_ARG1(call);
  • uspace/srv/fb/serial_console.c

    r7d88587 r50cfa6c  
    389389                        ipc_answer_2(callid, EOK, scr_width, scr_height);
    390390                        continue;
     391                case FB_GET_COLOR_CAP:
     392                        ipc_answer_1(callid, EOK, color ? FB_CCAP_INDEXED :
     393                            FB_CCAP_STYLE);
     394                        continue;
    391395                case FB_CLEAR:
    392396                        serial_clrscr();
Note: See TracChangeset for help on using the changeset viewer.