Subversion Repositories HelenOS-historic

Rev

Rev 1516 | Rev 1518 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1516 Rev 1517
Line 169... Line 169...
169
            return;
169
            return;
170
        case KBD_PUSHCHAR:
170
        case KBD_PUSHCHAR:
171
            /* got key from keyboard driver */
171
            /* got key from keyboard driver */
172
           
172
           
173
            retval = 0;
173
            retval = 0;
174
            c = IPC_GET_ARG1(call);
174
            c = IPC_GET_ARG1(call) - '0';
175
            /* switch to another virtual console */
175
            /* switch to another virtual console */
176
           
176
           
177
            conn = &connections[active_console];
177
            conn = &connections[active_console];
178
//          if ((c >= KBD_KEY_F1) && (c < KBD_KEY_F1 + CONSOLE_COUNT)) {
178
//          if ((c >= KBD_KEY_F1) && (c < KBD_KEY_F1 + CONSOLE_COUNT)) {
179
            if ((c >= '1') && (c < '1' + CONSOLE_COUNT)) {
179
            if ((c >= 0) && (c < CONSOLE_COUNT)) {
180
                /*FIXME: draw another console content from buffer */
180
                /*FIXME: draw another console content from buffer */
181
                if (c - '1' == active_console)
181
                if (c == active_console)
182
                        break;
182
                        break;
-
 
183
               
-
 
184
                if (c == 0) {
-
 
185
                    /* switch to kernel console*/
-
 
186
                     __SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE);
-
 
187
                     
-
 
188
                } else {
183
                active_console = c - '1';
189
                    active_console = c;
-
 
190
                }
-
 
191
               
-
 
192
               
184
                conn = &connections[active_console];
193
                conn = &connections[active_console];
185
 
194
 
186
                ipc_call_async(fb_info.phone, FB_CURSOR_VISIBILITY, 0, NULL, NULL);
195
                ipc_call_async(fb_info.phone, FB_CURSOR_VISIBILITY, 0, NULL, NULL);
187
       
196
       
188
                if (interbuffer) {
197
                if (interbuffer) {
189
                    for (i = 0; i < conn->screenbuffer.size_x; i++)
198
                    for (i = 0; i < conn->screenbuffer.size_x; i++)
190
                        for (j = 0; j < conn->screenbuffer.size_y; j++)
199
                        for (j = 0; j < conn->screenbuffer.size_y; j++)
191
                            interbuffer[i + j*conn->screenbuffer.size_x] = *get_field_at(&(conn->screenbuffer),i, j);
200
                            interbuffer[i + j*conn->screenbuffer.size_x] = *get_field_at(&(conn->screenbuffer),i, j);
192
                           
201
                           
193
                    ipc_call_sync(fb_info.phone, FB_DRAW_TEXT_DATA, 0, NULL);      
202
                    sync_send_2(fb_info.phone, FB_DRAW_TEXT_DATA, 0, 0, NULL, NULL);       
194
                } else {
203
                } else {
195
 
204
 
196
                    ipc_call_async_2(fb_info.phone, FB_CLEAR, 0, 0, NULL, NULL);
205
                    ipc_call_async_2(fb_info.phone, FB_CLEAR, 0, 0, NULL, NULL);
197
               
206
               
198
                   
207