diff options
Diffstat (limited to 'content')
-rw-r--r-- | content/content.c | 17 | ||||
-rw-r--r-- | content/content_protected.h | 5 |
2 files changed, 22 insertions, 0 deletions
diff --git a/content/content.c b/content/content.c index 353abeeb0..1a92e408b 100644 --- a/content/content.c +++ b/content/content.c @@ -678,6 +678,23 @@ void content_broadcast(struct content *c, content_msg msg, } } +/* exported interface documented in content_protected.h */ +void content_broadcast_errorcode(struct content *c, nserror errorcode) +{ + struct content_user *user, *next; + union content_msg_data data; + + assert(c); + + data.errorcode = errorcode; + + for (user = c->user_list->next; user != 0; user = next) { + next = user->next; /* user may be destroyed during callback */ + if (user->callback != 0) + user->callback(c, CONTENT_MSG_ERRORCODE, data, user->pw); + } +} + /** * A window containing the content has been opened. diff --git a/content/content_protected.h b/content/content_protected.h index e39979768..ecbe17fc7 100644 --- a/content/content_protected.h +++ b/content/content_protected.h @@ -160,6 +160,11 @@ void content_set_error(struct content *c); void content_set_status(struct content *c, const char *status_message); void content_broadcast(struct content *c, content_msg msg, union content_msg_data data); +/** + * Send an errorcode message to all users. + */ +void content_broadcast_errorcode(struct content *c, nserror errorcode); + void content_add_error(struct content *c, const char *token, unsigned int line); |