From e1bfb2ad674803ff241d01fe805add9895fd924e Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Thu, 9 Dec 2021 15:27:35 +0100 Subject: [PATCH] docs: Remove dependency on external resources The internals/eventloop document uses two images for illustrative purposes, but unlike other graphics included in the documentation these are not part of libvirt.git but rather were added to libvirt-media.git with commit fae5622074cf5e18d190496f8a43260c614599b2 Author: Michal Privoznik Date: Mon Jun 6 17:27:50 2016 +0200 Add two event loop images These images are going to be used in our documentation of the event loop. Signed-off-by: Michal Privoznik https://gitlab.com/libvirt/libvirt-media/-/commit/fae5622074cf5e18d190496f8a43260c614599b2 and are requested directly from there. Specifically, the URLs point to the libvirt.org mirror of libvirt-media.git instead of the primary repository hosted on GitLab. Import the images into libvirt.git so that the website doesn't rely on external resources and can, if desired, be browsed entirely offline from installed packages. Signed-off-by: Andrea Bolognani Reviewed-by: Michal Privoznik --- docs/event_loop_simple.png | Bin 0 -> 16043 bytes docs/event_loop_simple.svg | 398 +++++++++++++++++ docs/event_loop_worker.png | Bin 0 -> 29696 bytes docs/event_loop_worker.svg | 708 +++++++++++++++++++++++++++++++ docs/internals/eventloop.html.in | 4 +- docs/meson.build | 2 + 6 files changed, 1110 insertions(+), 2 deletions(-) create mode 100644 docs/event_loop_simple.png create mode 100644 docs/event_loop_simple.svg create mode 100644 docs/event_loop_worker.png create mode 100644 docs/event_loop_worker.svg diff --git a/docs/event_loop_simple.png b/docs/event_loop_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..daf4338a16bc1051aca0ca1c7ea13baa4e7179f1 GIT binary patch literal 16043 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 oyoAqQgLkkjj1If<3R=%_%oV@6V1 + + + + + image/svg+xml + + + + + + + + + + + + + + + + quit? + + + quit? + + + + + + + + message := get_next_message() + + + + + message := get_next_message() + + + + + + + + + process_message(message) + + + process_message(message) + + + + + + + + + + + + quit := false + + + + + quit := false + + + + + + + + + + False + + + + + False + + + + + + + + + + + + True + + + + + True + + + + + + + + + exit() + + + exit() + + + + diff --git a/docs/event_loop_worker.png b/docs/event_loop_worker.png new file mode 100644 index 0000000000000000000000000000000000000000..1bec1ea598b2806fea24ab25dc825c9055c76ee6 GIT binary patch literal 29696 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 + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + quit? + + + quit? + + + + + + + + message := get_next_message() + + + + + message := get_next_message() + + + + + + + + + + + quit := false + + + + + quit := false + + + + + + + + + + False + + + + + False + + + + + + + + + + + + True + + + + + True + + + + + + + + + exit() + + + exit() + + + + + + + + quit? + + + quit? + + + + + + + + wait_for_message() + + + + + wait_for_message() + + + + + + + + + process_message() + + + process_message() + + + + + + + + + + + + + + + + exit() + + + exit() + + + + + + + + + + + True + + + + + True + + + + + + + + False + + + + + False + + + + + diff --git a/docs/internals/eventloop.html.in b/docs/internals/eventloop.html.in index 3e62d5ca53..aa22ba15cd 100644 --- a/docs/internals/eventloop.html.in +++ b/docs/internals/eventloop.html.in @@ -29,7 +29,7 @@ not waiting for direct user input and have no graphical interface. Such as Libvirt.

- event loop + event loop

In Libvirt this approach is used in combination with poll(2) as all the communication with its @@ -70,7 +70,7 @@ acceptable for Libvirt. Therefore we have came up with the following solution.

- event loop + event loop

The event loop does only necessary minimum and hand over message processing to another thread. In fact, there can be diff --git a/docs/meson.build b/docs/meson.build index 3aabb52950..3e708acf0e 100644 --- a/docs/meson.build +++ b/docs/meson.build @@ -10,6 +10,8 @@ docs_assets = [ 'android-chrome-256x256.png', 'apple-touch-icon.png', 'browserconfig.xml', + 'event_loop_simple.png', + 'event_loop_worker.png', 'favicon.ico', 'favicon-16x16.png', 'favicon-32x32.png', -- 2.47.2