~ubuntu-branches/ubuntu/precise/xterm/precise-updates

« back to all changes in this revision

Viewing changes to screen.c

  • Committer: Bazaar Package Importer
  • Author(s): Lorenzo De Liso
  • Date: 2011-02-12 15:58:09 UTC
  • mfrom: (1.5.3 upstream)
  • mto: This revision was merged to the branch mainline in revision 33.
  • Revision ID: james.westby@ubuntu.com-20110212155809-vxve6aexyvm7aoh3
Tags: upstream-268
ImportĀ upstreamĀ versionĀ 268

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* $XTermId: screen.c,v 1.426 2010/10/11 00:46:05 tom Exp $ */
 
1
/* $XTermId: screen.c,v 1.431 2011/02/09 09:57:05 tom Exp $ */
2
2
 
3
3
/*
4
 
 * Copyright 1999-2009,2010 by Thomas E. Dickey
 
4
 * Copyright 1999-2010,2011 by Thomas E. Dickey
5
5
 *
6
6
 *                         All Rights Reserved
7
7
 *
119
119
                    value = (value | (unsigned) AlignMask()) + 1
120
120
 
121
121
#define SetupScrnPtr(dst,src,type) \
122
 
                dst = (type *) src; \
 
122
                dst = (type *) (void *) src; \
123
123
                assert(IsAligned(dst)); \
124
124
                src += skipNcol##type
125
125
 
126
 
#define ScrnBufAddr(ptrs, offset)  (ScrnBuf)    ((char *) (ptrs) + (offset))
127
 
#define LineDataAddr(ptrs, offset) (LineData *) ((char *) (ptrs) + (offset))
 
126
#define ScrnBufAddr(ptrs, offset)  (ScrnBuf)    ((void *) ((char *) (ptrs) + (offset)))
 
127
#define LineDataAddr(ptrs, offset) (LineData *) ((void *) ((char *) (ptrs) + (offset)))
128
128
 
129
129
#if OPT_TRACE > 1
130
130
static void
580
580
    TRACE(("ReallocateBufOffsets %dx%d ->%p\n", nrow, ncol, *sbufaddr));
581
581
}
582
582
 
 
583
#if OPT_FIFO_LINES
 
584
/*
 
585
 * Allocate a new FIFO index.
 
586
 */
 
587
static void
 
588
ReallocateFifoIndex(XtermWidget xw)
 
589
{
 
590
    TScreen *screen = TScreenOf(xw);
 
591
 
 
592
    if (screen->savelines > 0 && screen->saveBuf_index != 0) {
 
593
        ScrnBuf newBufHead;
 
594
        LineData *dstPtrs;
 
595
        LineData *srcPtrs;
 
596
        unsigned i;
 
597
        unsigned old_jump = scrnHeadSize(screen, 1);
 
598
        unsigned new_jump;
 
599
 
 
600
        screen->wide_chars = True;
 
601
        newBufHead = allocScrnHead(screen, (unsigned) screen->savelines);
 
602
        new_jump = scrnHeadSize(screen, 1);
 
603
 
 
604
        srcPtrs = (LineData *) screen->saveBuf_index;
 
605
        dstPtrs = (LineData *) newBufHead;
 
606
 
 
607
        for (i = 0; i < (unsigned) screen->savelines; ++i) {
 
608
            memcpy(dstPtrs, srcPtrs, SizeOfLineData);
 
609
            srcPtrs = LineDataAddr(srcPtrs, old_jump);
 
610
            dstPtrs = LineDataAddr(dstPtrs, new_jump);
 
611
        }
 
612
 
 
613
        screen->wide_chars = False;
 
614
        free(screen->saveBuf_index);
 
615
        screen->saveBuf_index = newBufHead;
 
616
    }
 
617
}
 
618
#endif
 
619
 
583
620
/*
584
621
 * This function dynamically adds support for wide-characters.
585
622
 */
611
648
            SwitchBufPtrs(screen, 0);
612
649
 
613
650
#if OPT_SAVE_LINES
614
 
#if !OPT_FIFO_LINES
 
651
#if OPT_FIFO_LINES
 
652
        ReallocateFifoIndex(xw);
 
653
#else
615
654
        ReallocateBufOffsets(xw,
616
655
                             &screen->saveBuf_index,
617
656
                             &screen->saveBuf_data,
2339
2378
                                                (j * wide) + k,
2340
2379
                                                ld, col);
2341
2380
                            } else {
 
2381
                                /* EMPTY */
2342
2382
                                /* FIXME - clear the target cell? */
2343
2383
                            }
2344
2384
                            ld->attribs[col] |= CHARDRAWN;