aboutsummaryrefslogtreecommitdiffstats
path: root/em-format/e-mail-formatter.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2012-12-05 03:56:41 +0800
committerMatthew Barnes <mbarnes@redhat.com>2012-12-08 03:01:04 +0800
commit13f4544dafe211a748b064b86a8af4085d042b2b (patch)
tree2d7d421306bd37aefc7edbd10b5a0599e961d690 /em-format/e-mail-formatter.c
parentaebf88cc8e3f45f8603a4706877dc59706be4963 (diff)
downloadgsoc2013-evolution-13f4544dafe211a748b064b86a8af4085d042b2b.tar
gsoc2013-evolution-13f4544dafe211a748b064b86a8af4085d042b2b.tar.gz
gsoc2013-evolution-13f4544dafe211a748b064b86a8af4085d042b2b.tar.bz2
gsoc2013-evolution-13f4544dafe211a748b064b86a8af4085d042b2b.tar.lz
gsoc2013-evolution-13f4544dafe211a748b064b86a8af4085d042b2b.tar.xz
gsoc2013-evolution-13f4544dafe211a748b064b86a8af4085d042b2b.tar.zst
gsoc2013-evolution-13f4544dafe211a748b064b86a8af4085d042b2b.zip
EMailFormatter: Simplify context allocation.
Replace the create_context() and free_context() class methods with a "context_size" class member defaulting to sizeof(EMailFormatterContext). EMailFormatter will use "context_size" to allocate a zero-filled slab of heap memory. Since EMailFormatterQuote is currently the only thing that overrides the "context_size" (to append a "qf_flags" member), let's keep this simple.
Diffstat (limited to 'em-format/e-mail-formatter.c')
-rw-r--r--em-format/e-mail-formatter.c32
1 files changed, 6 insertions, 26 deletions
diff --git a/em-format/e-mail-formatter.c b/em-format/e-mail-formatter.c
index 656e08d5d7..ad69c4b1dd 100644
--- a/em-format/e-mail-formatter.c
+++ b/em-format/e-mail-formatter.c
@@ -82,37 +82,20 @@ static gint signals[LAST_SIGNAL];
static EMailFormatterContext *
mail_formatter_create_context (EMailFormatter *formatter)
{
- EMailFormatterClass *formatter_class;
-
- formatter_class = E_MAIL_FORMATTER_GET_CLASS (formatter);
+ EMailFormatterClass *class;
- if (formatter_class->create_context) {
- if (!formatter_class->free_context) {
- g_warning (
- "%s implements create_context() but "
- "does not implement free_context()!",
- G_OBJECT_TYPE_NAME (formatter));
- }
+ class = E_MAIL_FORMATTER_GET_CLASS (formatter);
- return formatter_class->create_context (formatter);
- }
+ g_warn_if_fail (class->context_size >= sizeof (EMailFormatterContext));
- return g_new0 (EMailFormatterContext, 1);
+ return g_malloc0 (class->context_size);
}
static void
mail_formatter_free_context (EMailFormatter *formatter,
EMailFormatterContext *context)
{
- EMailFormatterClass *formatter_class;
-
- formatter_class = E_MAIL_FORMATTER_GET_CLASS (formatter);
-
- if (formatter_class->free_context) {
- formatter_class->free_context (formatter, context);
- } else {
- g_free (context);
- }
+ g_free (context);
}
static void
@@ -540,11 +523,8 @@ e_mail_formatter_class_init (EMailFormatterClass *class)
object_class->finalize = e_mail_formatter_finalize;
object_class->constructed = e_mail_formatter_constructed;
+ class->context_size = sizeof (EMailFormatterContext);
class->run = mail_formatter_run;
-
- /* EMailFormatter calls these directly */
- class->create_context = NULL;
- class->free_context = NULL;
class->set_style = mail_formatter_set_style;
color = &class->colors[E_MAIL_FORMATTER_COLOR_BODY];