a5061ecec5
An effort was started some time ago to consolidate all internal documentation in the git tree. However, this was just an accumulation of files in various formats without any strucutre or way to browse it, which results in no one even knowing that we have docs here. This converts most of the files to restructuredtext and uses Sphinx to generate an HTML browsable user manual (with a table of content and a first attempt to put things in a global hierarchy). There are almost no changes to the documentation content in this commit (some obviously obsolete things were removed). The plan is to get the toolchain up and running to make these docs easily available, and only then see about improving the content. We can migrate some things off the wiki and website, and rework the table of contents to have some more hierarchy levels because currently it's a bit messy. Change-Id: I924ac9dc6e753887ab56f18a09bdb0a1e1793bfd Reviewed-on: https://review.haiku-os.org/c/haiku/+/4370 Reviewed-by: Niels Sascha Reedijk <niels.reedijk@gmail.com>
61 lines
1.9 KiB
ReStructuredText
61 lines
1.9 KiB
ReStructuredText
BitmapManager class
|
|
###################
|
|
|
|
The BitmapManager object handles all ServerBitmap allocation and
|
|
deallocation. The rest of the server uses CreateBitmap and DeleteBitmap
|
|
instead of new and delete.
|
|
|
|
Member Functions
|
|
================
|
|
|
|
BitmapManager(void)
|
|
-------------------
|
|
|
|
1. Create the bitmap list
|
|
2. Create the bitmap area
|
|
3. Allocate the access semaphore
|
|
4. Call set_buffer_area_management
|
|
5. Set up the buffer pool via bpool
|
|
|
|
~BitmapManager(void)
|
|
--------------------
|
|
|
|
1. Iterate over each item in the bitmap list, removing each item,
|
|
calling brel() on its buffer, and deleting it.
|
|
2. Delete the bitmap list
|
|
3. Delete the bitmap area
|
|
4. Free the access semaphore
|
|
|
|
ServerBitmap \*CreateBitmap(BRect bounds, color_space space, int32 flags, int32 bytes_per_row=-1, screen_id screen=B_MAIN_SCREEN_ID)
|
|
------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
CreateBitmap is called by outside objects to allocate a ServerBitmap
|
|
object. If a problem occurs, it returns NULL.
|
|
|
|
1. Acquire the access semaphore
|
|
2. Verify parameters and if any are invalid, spew an error to stderr and
|
|
return NULL
|
|
3. Allocate a new ServerBitmap
|
|
4. Allocate a buffer for the bitmap with the bitmap's
|
|
theoretical buffer length
|
|
5. If NULL, delete the bitmap and return NULL
|
|
6. Set the bitmap's area and buffer to the appropriate values (area_for
|
|
buffer and buffer)
|
|
7. Add the bitmap to the bitmap list
|
|
8. Release the access semaphore
|
|
9. Return the bitmap
|
|
|
|
void DeleteBitmap(ServerBitmap \*bitmap)
|
|
----------------------------------------
|
|
|
|
Frees a ServerBitmap allocated by CreateBitmap()
|
|
|
|
1. Acquire the access semaphore
|
|
2. Find the bitmap in the list
|
|
3. Remove the bitmap from the list or release the semaphore and return
|
|
if not found
|
|
4. call brel() on the bitmap's buffer if it is non-NULL
|
|
5. delete the bitmap
|
|
6. Release the access semaphore
|
|
|