[sushi] font-loader: add a synchronous version of new_ft_face_from_uri()
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sushi] font-loader: add a synchronous version of new_ft_face_from_uri()
- Date: Sun, 29 Apr 2012 22:07:34 +0000 (UTC)
commit 91376f5d8903030401ff1cad6944c40cf1dfb00b
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Fri Apr 27 18:41:22 2012 -0400
font-loader: add a synchronous version of new_ft_face_from_uri()
This will be needed for gnome-font-viewer.
src/libsushi/sushi-font-loader.c | 50 +++++++++++++++++++++++++++++++-------
src/libsushi/sushi-font-loader.h | 5 ++++
2 files changed, 46 insertions(+), 9 deletions(-)
---
diff --git a/src/libsushi/sushi-font-loader.c b/src/libsushi/sushi-font-loader.c
index 6bb6ac3..45481c6 100644
--- a/src/libsushi/sushi-font-loader.c
+++ b/src/libsushi/sushi-font-loader.c
@@ -109,6 +109,22 @@ font_load_job_callback (gpointer user_data)
return FALSE;
}
+static void
+font_load_job_do_load (FontLoadJob *job,
+ GError **error)
+{
+ gchar *contents;
+ gsize length;
+
+ g_file_load_contents (job->file, NULL,
+ &contents, &length, NULL, error);
+
+ if (*error == NULL) {
+ job->face_contents = contents;
+ job->face_length = length;
+ }
+}
+
static gboolean
font_load_job (GIOSchedulerJob *sched_job,
GCancellable *cancellable,
@@ -116,18 +132,11 @@ font_load_job (GIOSchedulerJob *sched_job,
{
FontLoadJob *job = user_data;
GError *error = NULL;
- gchar *contents;
- gsize length;
- g_file_load_contents (job->file, NULL,
- &contents, &length, NULL, &error);
+ font_load_job_do_load (job, &error);
- if (error != NULL) {
+ if (error != NULL)
g_simple_async_result_take_error (job->result, error);
- } else {
- job->face_contents = contents;
- job->face_length = length;
- }
g_io_scheduler_job_send_to_mainloop_async (sched_job,
font_load_job_callback,
@@ -137,6 +146,29 @@ font_load_job (GIOSchedulerJob *sched_job,
}
/**
+ * sushi_new_ft_face_from_uri: (skip)
+ *
+ */
+FT_Face
+sushi_new_ft_face_from_uri (FT_Library library,
+ const gchar *uri,
+ gchar **contents,
+ GError **error)
+{
+ FontLoadJob *job = NULL;
+
+ job = font_load_job_new (library, uri, NULL, NULL);
+ font_load_job_do_load (job, error);
+
+ if (*error != NULL) {
+ g_object_unref (job);
+ return NULL;
+ }
+
+ return create_face_from_contents (job, contents, error);
+}
+
+/**
* sushi_new_ft_face_from_uri_async: (skip)
*
*/
diff --git a/src/libsushi/sushi-font-loader.h b/src/libsushi/sushi-font-loader.h
index 98cb967..cb3e4f7 100644
--- a/src/libsushi/sushi-font-loader.h
+++ b/src/libsushi/sushi-font-loader.h
@@ -32,6 +32,11 @@
#include FT_FREETYPE_H
#include <gio/gio.h>
+FT_Face sushi_new_ft_face_from_uri (FT_Library library,
+ const gchar *uri,
+ gchar **contents,
+ GError **error);
+
void sushi_new_ft_face_from_uri_async (FT_Library library,
const gchar *uri,
GAsyncReadyCallback callback,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]