~ubuntu-bugs-auftrags-killer/qemu/proper-error-characters

« back to all changes in this revision

Viewing changes to qemu-char.c

  • Committer: aliguori
  • Date: 2009-03-05 23:01:47 UTC
  • Revision ID: git-v1:2724b1806a63d66148cea62e1fe1cae3b417bc7e
monitor: Improve mux'ed console experience (Jan Kiszka)

Up to now, you never really knew if you already switched the console
after pressing CTRL-A C or if you mistyped it again. This patch
clarifies the situation by providing a prompt in a new line and
injecting a linebreak when switching away again. For this purpose, the
two events CHR_EVENT_MUX_IN and CHR_EVENT_MUX_OUT are introduced and
distributed on focus switches.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6716 c046a42c-6fe2-441c-8c8c-71466251a162

Show diffs side-by-side

added added

removed removed

Lines of Context:
310
310
    }
311
311
}
312
312
 
 
313
static void mux_chr_send_event(MuxDriver *d, int mux_nr, int event)
 
314
{
 
315
    if (d->chr_event[mux_nr])
 
316
        d->chr_event[mux_nr](d->ext_opaque[mux_nr], event);
 
317
}
 
318
 
313
319
static int mux_proc_byte(CharDriverState *chr, MuxDriver *d, int ch)
314
320
{
315
321
    if (d->term_got_escape) {
341
347
            break;
342
348
        case 'c':
343
349
            /* Switch to the next registered device */
 
350
            mux_chr_send_event(d, chr->focus, CHR_EVENT_MUX_OUT);
344
351
            chr->focus++;
345
352
            if (chr->focus >= d->mux_cnt)
346
353
                chr->focus = 0;
 
354
            mux_chr_send_event(d, chr->focus, CHR_EVENT_MUX_IN);
347
355
            break;
348
356
       case 't':
349
357
           term_timestamps = !term_timestamps;
413
421
 
414
422
    /* Send the event to all registered listeners */
415
423
    for (i = 0; i < d->mux_cnt; i++)
416
 
        if (d->chr_event[i])
417
 
            d->chr_event[i](d->ext_opaque[i], event);
 
424
        mux_chr_send_event(d, i, event);
418
425
}
419
426
 
420
427
static void mux_chr_update_read_handler(CharDriverState *chr)