mirror of
https://github.com/tmux/tmux.git
synced 2026-09-16 10:11:57 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0623d1e968 | ||
|
|
c5fb5e8bb0 | ||
|
|
b8434182c9 | ||
|
|
e1f942f26a |
5
CHANGES
5
CHANGES
@@ -1,3 +1,8 @@
|
|||||||
|
CHANGES FROM 3.6a TO 3.6b
|
||||||
|
|
||||||
|
* Remove images from the correct list when they are removed while in the
|
||||||
|
alternate screen (reported by xlabai at tencent dot com).
|
||||||
|
|
||||||
CHANGES FROM 3.6 TO 3.6a
|
CHANGES FROM 3.6 TO 3.6a
|
||||||
|
|
||||||
* Fix a buffer overread and an infinite loop in format processing (reported by
|
* Fix a buffer overread and an infinite loop in format processing (reported by
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# configure.ac
|
# configure.ac
|
||||||
|
|
||||||
AC_INIT([tmux], 3.6a)
|
AC_INIT([tmux], 3.6b)
|
||||||
AC_PREREQ([2.60])
|
AC_PREREQ([2.60])
|
||||||
|
|
||||||
AC_CONFIG_AUX_DIR(etc)
|
AC_CONFIG_AUX_DIR(etc)
|
||||||
|
|||||||
8
image.c
8
image.c
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
static struct images all_images = TAILQ_HEAD_INITIALIZER(all_images);
|
static struct images all_images = TAILQ_HEAD_INITIALIZER(all_images);
|
||||||
static u_int all_images_count;
|
static u_int all_images_count;
|
||||||
|
#define MAX_IMAGE_COUNT 20
|
||||||
|
|
||||||
static void
|
static void
|
||||||
image_free(struct image *im)
|
image_free(struct image *im)
|
||||||
@@ -34,7 +35,7 @@ image_free(struct image *im)
|
|||||||
TAILQ_REMOVE(&all_images, im, all_entry);
|
TAILQ_REMOVE(&all_images, im, all_entry);
|
||||||
all_images_count--;
|
all_images_count--;
|
||||||
|
|
||||||
TAILQ_REMOVE(&s->images, im, entry);
|
TAILQ_REMOVE(im->list, im, entry);
|
||||||
sixel_free(im->data);
|
sixel_free(im->data);
|
||||||
free(im->fallback);
|
free(im->fallback);
|
||||||
free(im);
|
free(im);
|
||||||
@@ -108,10 +109,11 @@ image_store(struct screen *s, struct sixel_image *si)
|
|||||||
|
|
||||||
image_fallback(&im->fallback, im->sx, im->sy);
|
image_fallback(&im->fallback, im->sx, im->sy);
|
||||||
|
|
||||||
TAILQ_INSERT_TAIL(&s->images, im, entry);
|
im->list = &s->images;
|
||||||
|
TAILQ_INSERT_TAIL(im->list, im, entry);
|
||||||
|
|
||||||
TAILQ_INSERT_TAIL(&all_images, im, all_entry);
|
TAILQ_INSERT_TAIL(&all_images, im, all_entry);
|
||||||
if (++all_images_count == 10/*XXX*/)
|
if (++all_images_count == MAX_IMAGE_COUNT)
|
||||||
image_free(TAILQ_FIRST(&all_images));
|
image_free(TAILQ_FIRST(&all_images));
|
||||||
|
|
||||||
return (im);
|
return (im);
|
||||||
|
|||||||
14
screen.c
14
screen.c
@@ -633,7 +633,10 @@ screen_reflow(struct screen *s, u_int new_x, u_int *cx, u_int *cy, int cursor)
|
|||||||
void
|
void
|
||||||
screen_alternate_on(struct screen *s, struct grid_cell *gc, int cursor)
|
screen_alternate_on(struct screen *s, struct grid_cell *gc, int cursor)
|
||||||
{
|
{
|
||||||
u_int sx, sy;
|
u_int sx, sy;
|
||||||
|
#ifdef ENABLE_SIXEL
|
||||||
|
struct image *im;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (SCREEN_IS_ALTERNATE(s))
|
if (SCREEN_IS_ALTERNATE(s))
|
||||||
return;
|
return;
|
||||||
@@ -650,6 +653,8 @@ screen_alternate_on(struct screen *s, struct grid_cell *gc, int cursor)
|
|||||||
|
|
||||||
#ifdef ENABLE_SIXEL
|
#ifdef ENABLE_SIXEL
|
||||||
TAILQ_CONCAT(&s->saved_images, &s->images, entry);
|
TAILQ_CONCAT(&s->saved_images, &s->images, entry);
|
||||||
|
TAILQ_FOREACH(im, &s->saved_images, entry)
|
||||||
|
im->list = &s->saved_images;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
grid_view_clear(s->grid, 0, 0, sx, sy, 8);
|
grid_view_clear(s->grid, 0, 0, sx, sy, 8);
|
||||||
@@ -662,7 +667,10 @@ screen_alternate_on(struct screen *s, struct grid_cell *gc, int cursor)
|
|||||||
void
|
void
|
||||||
screen_alternate_off(struct screen *s, struct grid_cell *gc, int cursor)
|
screen_alternate_off(struct screen *s, struct grid_cell *gc, int cursor)
|
||||||
{
|
{
|
||||||
u_int sx = screen_size_x(s), sy = screen_size_y(s);
|
u_int sx = screen_size_x(s), sy = screen_size_y(s);
|
||||||
|
#ifdef ENABLE_SIXEL
|
||||||
|
struct image *im;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the current size is different, temporarily resize to the old size
|
* If the current size is different, temporarily resize to the old size
|
||||||
@@ -709,6 +717,8 @@ screen_alternate_off(struct screen *s, struct grid_cell *gc, int cursor)
|
|||||||
#ifdef ENABLE_SIXEL
|
#ifdef ENABLE_SIXEL
|
||||||
image_free_all(s);
|
image_free_all(s);
|
||||||
TAILQ_CONCAT(&s->images, &s->saved_images, entry);
|
TAILQ_CONCAT(&s->images, &s->saved_images, entry);
|
||||||
|
TAILQ_FOREACH(im, &s->images, entry)
|
||||||
|
im->list = &s->images;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (s->cx > screen_size_x(s) - 1)
|
if (s->cx > screen_size_x(s) - 1)
|
||||||
|
|||||||
4
tmux.h
4
tmux.h
@@ -936,8 +936,10 @@ struct image {
|
|||||||
u_int sx;
|
u_int sx;
|
||||||
u_int sy;
|
u_int sy;
|
||||||
|
|
||||||
TAILQ_ENTRY (image) all_entry;
|
struct images *list;
|
||||||
TAILQ_ENTRY (image) entry;
|
TAILQ_ENTRY (image) entry;
|
||||||
|
|
||||||
|
TAILQ_ENTRY (image) all_entry;
|
||||||
};
|
};
|
||||||
TAILQ_HEAD(images, image);
|
TAILQ_HEAD(images, image);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user