Subversion Repositories HelenOS

Rev

Rev 2479 | Rev 2677 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2479 Rev 2619
Line 193... Line 193...
193
    keyfield_t *interbuf = NULL;
193
    keyfield_t *interbuf = NULL;
194
    size_t intersize = 0;
194
    size_t intersize = 0;
195
    int i;
195
    int i;
196
 
196
 
197
    if (client_connected) {
197
    if (client_connected) {
198
        ipc_answer_fast(iid, ELIMIT, 0,0);
198
        ipc_answer_0(iid, ELIMIT);
199
        return;
199
        return;
200
    }
200
    }
201
    client_connected = 1;
201
    client_connected = 1;
202
    ipc_answer_fast(iid, 0, 0, 0); /* Accept connection */
202
    ipc_answer_0(iid, EOK); /* Accept connection */
203
 
203
 
204
    while (1) {
204
    while (1) {
205
        callid = async_get_call(&call);
205
        callid = async_get_call(&call);
206
        switch (IPC_GET_METHOD(call)) {
206
        switch (IPC_GET_METHOD(call)) {
207
        case IPC_M_PHONE_HUNGUP:
207
        case IPC_M_PHONE_HUNGUP:
208
            client_connected = 0;
208
            client_connected = 0;
209
            ipc_answer_fast(callid, 0, 0, 0);
209
            ipc_answer_0(callid, EOK);
210
            return; /* Exit thread */
210
            return; /* Exit thread */
211
        case IPC_M_AS_AREA_SEND:
211
        case IPC_M_AS_AREA_SEND:
212
            /* We accept one area for data interchange */
212
            /* We accept one area for data interchange */
213
            intersize = IPC_GET_ARG2(call);
213
            intersize = IPC_GET_ARG2(call);
214
            if (intersize >= scr_width * scr_height *
214
            if (intersize >= scr_width * scr_height *
215
                sizeof(*interbuf)) {
215
                sizeof(*interbuf)) {
216
                receive_comm_area(callid, &call, (void *)
216
                receive_comm_area(callid, &call,
217
                    &interbuf);
217
                    (void *) &interbuf);
218
                continue;
218
                continue;
219
            }
219
            }
220
            retval = EINVAL;
220
            retval = EINVAL;
221
            break;
221
            break;
222
        case FB_DRAW_TEXT_DATA:
222
        case FB_DRAW_TEXT_DATA:
Line 226... Line 226...
226
            }
226
            }
227
            draw_text_data(interbuf);
227
            draw_text_data(interbuf);
228
            retval = 0;
228
            retval = 0;
229
            break;
229
            break;
230
        case FB_GET_CSIZE:
230
        case FB_GET_CSIZE:
231
            ipc_answer_fast(callid, 0, scr_height, scr_width);
231
            ipc_answer_2(callid, EOK, scr_height, scr_width);
232
            continue;
232
            continue;
233
        case FB_CLEAR:
233
        case FB_CLEAR:
234
            clrscr();
234
            clrscr();
235
            retval = 0;
235
            retval = 0;
236
            break;
236
            break;
Line 298... Line 298...
298
            break;
298
            break;
299
 
299
 
300
        default:
300
        default:
301
            retval = ENOENT;
301
            retval = ENOENT;
302
        }
302
        }
303
        ipc_answer_fast(callid, retval, 0, 0);
303
        ipc_answer_0(callid, retval);
304
    }
304
    }
305
}
305
}
306
 
306
 
307
int ega_init(void)
307
int ega_init(void)
308
{
308
{