diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2017-05-10 20:44:30 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2017-05-10 20:44:30 (GMT) |
commit | 90e0f7ac04c1622f226dda57a3329b6fe98307e8 (patch) | |
tree | 68313927f67ed3f1d903562e1760d32a902f775a /src/glibext/gbuffercache.c | |
parent | 8e76324b01e5b4979f346f0bc8c84372477a3d38 (diff) |
Removed the link to binary content used for printing from instructions.
Diffstat (limited to 'src/glibext/gbuffercache.c')
-rw-r--r-- | src/glibext/gbuffercache.c | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/src/glibext/gbuffercache.c b/src/glibext/gbuffercache.c index 926d034..fd7c987 100644 --- a/src/glibext/gbuffercache.c +++ b/src/glibext/gbuffercache.c @@ -84,7 +84,7 @@ static void get_cache_info_addr(const cache_info *, size_t, gint, vmpa2t *); static void on_line_ref_toggle(cache_info *, GBufferLine *, gboolean); /* Fournit la ligne de tampon correspondant aux générateurs. */ -static GBufferLine *get_cache_info_line(cache_info *, size_t); +static GBufferLine *get_cache_info_line(cache_info *, size_t, const GBinContent *); /* Force la réinitialisation d'une éventuelle ligne cachée. */ static void _reset_cache_info_line_unlocked(cache_info *); @@ -102,6 +102,8 @@ struct _GBufferCache { GObject parent; /* A laisser en premier */ + const GBinContent *content; /* Contenu binaire global */ + cache_info *lines; /* Liste des lignes intégrées */ size_t count; /* Quantité en cache */ size_t used; /* Quantité utilisée */ @@ -410,8 +412,9 @@ static void on_line_ref_toggle(cache_info *info, GBufferLine *line, gboolean las /****************************************************************************** * * -* Paramètres : info = informations sur une ligne à venir manipuler. * -* index = indice de la ligne à constituer. * +* Paramètres : info = informations sur une ligne à venir manipuler. * +* index = indice de la ligne à constituer. * +* content = éventuel contenu binaire brut à imprimer. * * * * Description : Fournit la ligne de tampon correspondant aux générateurs. * * * @@ -421,7 +424,7 @@ static void on_line_ref_toggle(cache_info *info, GBufferLine *line, gboolean las * * ******************************************************************************/ -static GBufferLine *get_cache_info_line(cache_info *info, size_t index) +static GBufferLine *get_cache_info_line(cache_info *info, size_t index, const GBinContent *content) { GBufferLine *result; /* Construction à retourner */ size_t i; /* Boucle de parcours */ @@ -437,11 +440,13 @@ static GBufferLine *get_cache_info_line(cache_info *info, size_t index) g_object_add_toggle_ref(G_OBJECT(result), (GToggleNotify)on_line_ref_toggle, info); if (info->count == 1) - g_line_generator_print(info->generator.instance, result, index, info->generator.repeat); + g_line_generator_print(info->generator.instance, result, index, + info->generator.repeat, content); else for (i = 0; i < info->count; i++) - g_line_generator_print(info->generators[i].instance, result, index, info->generators[i].repeat); + g_line_generator_print(info->generators[i].instance, result, index, + info->generators[i].repeat, content); info->line = result; @@ -590,6 +595,9 @@ static void g_buffer_cache_dispose(GBufferCache *cache) cache_info *info; /* Accès directe à une ligne */ size_t j; /* Boucle de parcours #2 */ + if (cache->content != NULL) + g_object_unref(G_OBJECT(cache->content)); + for (i = 0; i < cache->used; i++) { info = &cache->lines[i]; @@ -649,7 +657,7 @@ static void g_buffer_cache_finalize(GBufferCache *cache) /****************************************************************************** * * -* Paramètres : - * +* Paramètres : content = éventuel contenu binaire brut à référencer. * * * * Description : Crée un nouveau composant de tampon pour code désassemblé. * * * @@ -659,12 +667,18 @@ static void g_buffer_cache_finalize(GBufferCache *cache) * * ******************************************************************************/ -GBufferCache *g_buffer_cache_new(void) +GBufferCache *g_buffer_cache_new(const GBinContent *content) { GBufferCache *result; /* Composant à retourner */ result = g_object_new(G_TYPE_BUFFER_CACHE, NULL); + if (content != NULL) + { + result->content = content; + g_object_ref(G_OBJECT(content)); + } + return result; } @@ -1325,7 +1339,7 @@ GBufferLine *g_buffer_cache_find_line_by_index(const GBufferCache *cache, size_t GBufferLine *result; /* Ligne trouvée à retourner */ if (index < cache->used) - result = get_cache_info_line(&cache->lines[index], index); + result = get_cache_info_line(&cache->lines[index], index, cache->content); else result = NULL; @@ -1352,7 +1366,7 @@ void g_buffer_cache_collect_widths(GBufferCache *cache, size_t index, line_width { GBufferLine *line; /* Ligne éphémère à mesurer */ - line = get_cache_info_line(&cache->lines[index], index); + line = get_cache_info_line(&cache->lines[index], index, cache->content); g_buffer_line_collect_widths(line, summary); @@ -1416,7 +1430,7 @@ void g_buffer_cache_draw(const GBufferCache *cache, cairo_t *cr, size_t first, s if (i == first || (g_buffer_cache_get_line_flags(cache, i) & BLF_WIDTH_MANAGER)) g_width_tracker_get_local_width_summary(cache->tracker, i, &summary); - line = get_cache_info_line(info, i); + line = get_cache_info_line(info, i, cache->content); g_buffer_line_draw(line, cr, &summary, class->text_pos, y, display, list); |