From b53f0b34fdb6fd6475253b002c48d54a33af8d3b Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Mon, 6 Jan 2025 21:41:59 +0000 Subject: [PATCH] Add dev.html page --- deploy/img/dev/img-buf1.png | Bin 0 -> 22185 bytes deploy/img/dev/img-buf2.png | Bin 0 -> 24025 bytes deploy/img/dev/img-buf3.png | Bin 0 -> 6784 bytes deploy/img/dev/img-buf4.png | Bin 0 -> 51243 bytes src/dev.md | 58 ++++++++++++++++++++++++++++++++++++ src/more.md | 1 + 6 files changed, 59 insertions(+) create mode 100644 deploy/img/dev/img-buf1.png create mode 100644 deploy/img/dev/img-buf2.png create mode 100644 deploy/img/dev/img-buf3.png create mode 100644 deploy/img/dev/img-buf4.png create mode 100644 src/dev.md diff --git a/deploy/img/dev/img-buf1.png b/deploy/img/dev/img-buf1.png new file mode 100644 index 0000000000000000000000000000000000000000..324c4b4673fe8965655c6351e0c617cadae8b0e4 GIT binary patch literal 22185 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 literal 0 HcmV?d00001 diff --git a/deploy/img/dev/img-buf2.png b/deploy/img/dev/img-buf2.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff99e22154c2a169ca3119e77024e1d9712c0d7 GIT binary patch literal 24025 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 literal 0 HcmV?d00001 diff --git a/deploy/img/dev/img-buf3.png b/deploy/img/dev/img-buf3.png new file mode 100644 index 0000000000000000000000000000000000000000..ef9d33fa6f254dfc3d0a5443148b69607dbb3eb9 GIT binary patch literal 6784 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 literal 0 HcmV?d00001 diff --git a/deploy/img/dev/img-buf4.png b/deploy/img/dev/img-buf4.png new file mode 100644 index 0000000000000000000000000000000000000000..82a7a4367401dd6dc01628dad857451fd622114f GIT binary patch literal 51243 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�R9iYE}Ug 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 R{Rsv>lnvDN^}fu^KLH5QXb%7Y literal 0 HcmV?d00001 diff --git a/src/dev.md b/src/dev.md new file mode 100644 index 0000000..d548c96 --- /dev/null +++ b/src/dev.md @@ -0,0 +1,58 @@ +# Developer Section + +1. [Image Buffers](#img-buf) + +# 1. Image Buffers {#img-buf} + +Ref: [#2489](https://github.com/labwc/labwc/pull/2489) + +This relates to the structs `lab_img`, `lab_image_cache` and +`scaled_img_buffer`. + +- When creating a `scaled_img_buffer`, `lab_img` is replicated via + `lab_img_copy()` +- When destroying a `scaled_img_buffer`, `lab_img` is destroyed via + `lab_img_destroy()` + +## The lifetime of `lab_img` and `lab_img_cache` + +After startup, theme struct references `lab_img`, which references +`lab_img_cache` with refcount=1. Here, `lab_img_cache` is the wrapper for +`lab_data_buffer` or `RsvgHandle` and represents the actual content of the +loaded image file. + + + +When a window is opened and its decoration is created, the `lab_img` is copied +via `lab_img_copy()` and a new `scaled_img_buffer` references it. Note that the +image content is not copied here; instead, the refcount of `lab_img_cache` is +incremented. + + + +When the theme is de-initialized in `theme_finish()` and the `lab_img` +referenced by theme is destroyed, the `lab_img` referenced by the +`scaled_img_buffer` and `lab_img_cache` outlive. Therefore, it's safe for +`_update_buffer()` in `scaled-img-buffer.c` to be called. + + + +And when the decoration is destroyed via undecorate(), the `scaled_img_buffer`, +`lab_img` and `lab_img_cache` are finally destroyed. + +## Motivation for `lab_img_copy()` and `lab_img_cache` + +For better understanding of `lab_img` API in general, let me explain the initial +motivation of `lab_img_copy()` and `lab_img_cache`. `lab_img_copy()` was +introduced to share the image content with different variants of buttons +including normal, hovered, rounded, rounded-hovered buttons: + + + +For example, when `close_hover-active.png` is not found, the `lab_img` for +`close-active.png` is copied via `lab_img_copy()` and a "modifier" function +that draws a hover overlay on it is added to the copied `lab_img` via +`lab_img_add_modifier()`. And if the close button is placed at the corner of +the titlebar, the `lab_img` is further copied and the modifier function that +cuts its corner is applied. + diff --git a/src/more.md b/src/more.md index df134fc..4b09e49 100644 --- a/src/more.md +++ b/src/more.md @@ -1,4 +1,5 @@ - [configuration](configuration.html) +- [dev](dev.html) - [faq](faq.html) - [hidpi scaling](hidpi-scaling.html) - [links](links.html)