summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <michael.drake@codethink.co.uk>2019-11-11 21:34:46 +0000
committerMichael Drake <michael.drake@codethink.co.uk>2019-11-11 21:54:15 +0000
commit8e1154eb1cef4e102504fae25fb9805040d37226 (patch)
tree92c1f50c04edf0d6ae741f671e1994df13150a8c
parentdb7f1f01a97cb9a26cbe6433542d7d6b25940929 (diff)
downloadnetsurf-8e1154eb1cef4e102504fae25fb9805040d37226.tar.gz
netsurf-8e1154eb1cef4e102504fae25fb9805040d37226.tar.bz2
Content: Remove redundant and unused redraw message fields.
This was archaic support for rendering images as "overlays", and avoiding a redraw via the browser window redraw and HTML contents. Basically it was "plot this image here", but it was too error prone, so it was removed a long time ago. These are some last vestiges that made the redraw message look more complex than it is.
-rw-r--r--content/content.c8
-rw-r--r--content/content.h9
-rw-r--r--content/handlers/html/html_object.c47
-rw-r--r--content/handlers/image/gif.c24
4 files changed, 17 insertions, 71 deletions
diff --git a/content/content.c b/content/content.c
index 385847daf..82a87c536 100644
--- a/content/content.c
+++ b/content/content.c
@@ -538,14 +538,6 @@ void content__request_redraw(struct content *c,
data.redraw.width = width;
data.redraw.height = height;
- data.redraw.full_redraw = true;
-
- data.redraw.object = c;
- data.redraw.object_x = 0;
- data.redraw.object_y = 0;
- data.redraw.object_width = c->width;
- data.redraw.object_height = c->height;
-
content_broadcast(c, CONTENT_MSG_REDRAW, &data);
}
diff --git a/content/content.h b/content/content.h
index a5bf46c61..f3e578b6b 100644
--- a/content/content.h
+++ b/content/content.h
@@ -131,15 +131,6 @@ union content_msg_data {
/** CONTENT_MSG_REDRAW - Area of content which needs redrawing */
struct {
int x, y, width, height;
- /** Redraw the area fully. If false, object must be set,
- * and only the object will be redrawn. */
- bool full_redraw;
- /** Object to redraw if full_redraw is false. */
- struct content *object;
- /** Coordinates to plot object at. */
- int object_x, object_y;
- /** Dimensions to plot object with. */
- int object_width, object_height;
} redraw;
/** CONTENT_MSG_REFRESH - Minimum delay */
int delay;
diff --git a/content/handlers/html/html_object.c b/content/handlers/html/html_object.c
index 37bf29faf..223f5516d 100644
--- a/content/handlers/html/html_object.c
+++ b/content/handlers/html/html_object.c
@@ -191,7 +191,6 @@ html_object_callback(hlcache_handle *object,
data.redraw.y = y + box->padding[TOP];
data.redraw.width = box->width;
data.redraw.height = box->height;
- data.redraw.full_redraw = true;
content_broadcast(&c->base, CONTENT_MSG_REDRAW, &data);
}
@@ -289,53 +288,39 @@ html_object_callback(hlcache_handle *object,
break;
}
- data.redraw.object_width = box->width;
- data.redraw.object_height = box->height;
-
/* Add offset to box */
data.redraw.x += x;
data.redraw.y += y;
- data.redraw.object_x += x;
- data.redraw.object_y += y;
-
- content_broadcast(&c->base,
- CONTENT_MSG_REDRAW, &data);
- break;
} else {
/* Non-background case */
- if (hlcache_handle_get_content(object) ==
- event->data.redraw.object) {
-
- int w = content_get_width(object);
- int h = content_get_height(object);
-
- if (w != 0) {
- data.redraw.x =
- data.redraw.x *
+ int w = content_get_width(object);
+ int h = content_get_height(object);
+
+ if (w != 0 && box->width != w) {
+ /* Not showing image at intrinsic
+ * width; need to scale the redraw
+ * request area. */
+ data.redraw.x = data.redraw.x *
box->width / w;
- data.redraw.width =
+ data.redraw.width =
data.redraw.width *
box->width / w;
- }
+ }
- if (h != 0) {
- data.redraw.y =
- data.redraw.y *
+ if (h != 0 && box->height != w) {
+ /* Not showing image at intrinsic
+ * height; need to scale the redraw
+ * request area. */
+ data.redraw.y = data.redraw.y *
box->height / h;
- data.redraw.height =
+ data.redraw.height =
data.redraw.height *
box->height / h;
- }
-
- data.redraw.object_width = box->width;
- data.redraw.object_height = box->height;
}
data.redraw.x += x + box->padding[LEFT];
data.redraw.y += y + box->padding[TOP];
- data.redraw.object_x += x + box->padding[LEFT];
- data.redraw.object_y += y + box->padding[TOP];
}
content_broadcast(&c->base, CONTENT_MSG_REDRAW, &data);
diff --git a/content/handlers/image/gif.c b/content/handlers/image/gif.c
index 94f8d3f62..fa343fbac 100644
--- a/content/handlers/image/gif.c
+++ b/content/handlers/image/gif.c
@@ -173,11 +173,9 @@ static void nsgif_animate(void *p)
/* redraw background (true) or plot on top (false) */
if (gif->current_frame > 0) {
- data.redraw.full_redraw =
- gif->gif->frames[f - 1].redraw_required;
/* previous frame needed clearing: expand the redraw area to
* cover it */
- if (data.redraw.full_redraw) {
+ if (gif->gif->frames[f - 1].redraw_required) {
if (data.redraw.x >
(int)(gif->gif->frames[f - 1].redraw_x)) {
data.redraw.width += data.redraw.x -
@@ -207,28 +205,8 @@ static void nsgif_animate(void *p)
data.redraw.y +
gif->gif->frames[f - 1].redraw_height;
}
- } else {
- /* do advanced check */
- if ((data.redraw.x == 0) && (data.redraw.y == 0) &&
- (data.redraw.width == (int)(gif->gif->width)) &&
- (data.redraw.height == (int)(gif->gif->height))) {
- data.redraw.full_redraw = !gif->gif->frames[f].opaque;
- } else {
- data.redraw.full_redraw = true;
- data.redraw.x = 0;
- data.redraw.y = 0;
- data.redraw.width = gif->gif->width;
- data.redraw.height = gif->gif->height;
- }
}
- /* other data */
- data.redraw.object = (struct content *) gif;
- data.redraw.object_x = 0;
- data.redraw.object_y = 0;
- data.redraw.object_width = gif->base.width;
- data.redraw.object_height = gif->base.height;
-
content_broadcast(&gif->base, CONTENT_MSG_REDRAW, &data);
}