summaryrefslogtreecommitdiff
path: root/content
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2010-04-09 18:52:44 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2010-04-09 18:52:44 +0000
commit4a4cc0d1bce9967fcd1fed4cea12c008702a38fc (patch)
tree42b2dce595096120ef57f022bd8c05275b9c1999 /content
parentb2124867dba7c5cc5851bcb08448c02a8ef8718b (diff)
downloadnetsurf-4a4cc0d1bce9967fcd1fed4cea12c008702a38fc.tar.gz
netsurf-4a4cc0d1bce9967fcd1fed4cea12c008702a38fc.tar.bz2
Introduce content_set_ready.
Make content_convert emit events only if content is in appropriate state. Remove no-longer-relevant assertion from content_convert. svn path=/trunk/netsurf/; revision=10330
Diffstat (limited to 'content')
-rw-r--r--content/content.c21
-rw-r--r--content/content_protected.h1
2 files changed, 15 insertions, 7 deletions
diff --git a/content/content.c b/content/content.c
index 2bf94431d..a5890e970 100644
--- a/content/content.c
+++ b/content/content.c
@@ -646,8 +646,6 @@ void content_update_status(struct content *c)
void content_convert(struct content *c)
{
- union content_msg_data msg_data;
-
assert(c);
assert(c->type < HANDLER_MAP_COUNT);
assert(c->status == CONTENT_STATUS_LOADING);
@@ -661,21 +659,30 @@ void content_convert(struct content *c)
if (handler_map[c->type].convert) {
if (!handler_map[c->type].convert(c)) {
c->status = CONTENT_STATUS_ERROR;
- c->locked = false;
- return;
}
} else {
c->status = CONTENT_STATUS_DONE;
}
c->locked = false;
- assert(c->status == CONTENT_STATUS_READY ||
- c->status == CONTENT_STATUS_DONE);
- content_broadcast(c, CONTENT_MSG_READY, msg_data);
+ if (c->status == CONTENT_STATUS_READY)
+ content_set_ready(c);
if (c->status == CONTENT_STATUS_DONE)
content_set_done(c);
}
+/**
+ * Put a content in status CONTENT_STATUS_READY.
+ */
+
+void content_set_ready(struct content *c)
+{
+ union content_msg_data msg_data;
+
+ c->status = CONTENT_STATUS_READY;
+ content_update_status(c);
+ content_broadcast(c, CONTENT_MSG_READY, msg_data);
+}
/**
* Put a content in status CONTENT_STATUS_DONE.
diff --git a/content/content_protected.h b/content/content_protected.h
index 3fd6c8329..6337e3eb2 100644
--- a/content/content_protected.h
+++ b/content/content_protected.h
@@ -195,6 +195,7 @@ struct content {
extern const char * const content_type_name[];
extern const char * const content_status_name[];
+void content_set_ready(struct content *c);
void content_set_done(struct content *c);
void content_set_status(struct content *c, const char *status_message, ...);
void content_broadcast(struct content *c, content_msg msg,