diff options
author | Egmont Koblinger <egmont@gmail.com> | 2013-10-23 00:22:42 +0200 |
---|---|---|
committer | Christian Persch <chpe@gnome.org> | 2013-11-18 20:32:03 +0100 |
commit | 7a201c651251b483a026eae60c1f48cc27da7abe (patch) | |
tree | a2051a4a09440f88789028deca94c2a440d91389 /src/vtestream-file.h | |
parent | 5fc57fc8e2feb0cd8e99f97ca4b25fee5eba2f06 (diff) | |
download | vte-7a201c651251b483a026eae60c1f48cc27da7abe.tar.gz |
ring,stream: Refactor the interface between the ring and the stream
Refactor and simplify the interface between ring and vte-stream; this is
required for the forthcoming rewrapping feature. Paging is now a concept
private to vte-stream. Instead of telling when to turn page, the ring now
advances the tail of the streams, and vte-stream does paging on its own
based on this information.
https://bugzilla.gnome.org/show_bug.cgi?id=336238#c74
Diffstat (limited to 'src/vtestream-file.h')
-rw-r--r-- | src/vtestream-file.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/vtestream-file.h b/src/vtestream-file.h index e9d8d77c..06de79d9 100644 --- a/src/vtestream-file.h +++ b/src/vtestream-file.h @@ -460,22 +460,24 @@ _vte_file_stream_truncate (VteStream *astream, gsize offset) } static void -_vte_file_stream_new_page (VteStream *astream) +_vte_file_stream_advance_tail (VteStream *astream, gsize offset) { VteFileStream *stream = (VteFileStream *) astream; - stream->offset[1] = stream->offset[0]; - stream->offset[0] = stream->head; - _vte_file_stream_swap_fds (stream); - _file_reset (&stream->file[0]); + if (offset >= stream->offset[0]) { + stream->offset[1] = stream->offset[0]; + stream->offset[0] = stream->head; + _vte_file_stream_swap_fds (stream); + _file_reset (&stream->file[0]); + } } static gsize -_vte_file_stream_head (VteStream *astream, guint _index) +_vte_file_stream_head (VteStream *astream) { VteFileStream *stream = (VteFileStream *) astream; - return _index == 0 ? stream->head : stream->offset[_index - 1]; + return stream->head; } static void @@ -489,6 +491,6 @@ _vte_file_stream_class_init (VteFileStreamClass *klass) klass->append = _vte_file_stream_append; klass->read = _vte_file_stream_read; klass->truncate = _vte_file_stream_truncate; - klass->new_page = _vte_file_stream_new_page; + klass->advance_tail = _vte_file_stream_advance_tail; klass->head = _vte_file_stream_head; } |