Options for requested width, height, and pixel scaling and window title can
be shared between display subsystems.
Include correct header for local sdl function definitions rather than
manually duplicating a reference for init_SDL().
Correct a typo in comments on build_lisp_map().
* Allow choice of foreground and background colors for Medley X11 display
lde/ldex Accepts -fg/-foreground <color> and -bg/-background <color>,
or the corresponding X resources ldex*foreground and ldex*background
to specify the colors that will represent the monochrome Medley display
pixels.
* Extend screen foreground/background color selection to SDL display subsystem (ldesdl)
* Update SDL dependent code and makefile segments to prepare for SDL3
Many APIs have changed between SDL2 and SDL3. This update adds
preprocessor conditionals to adapt the Maiko SDL code to allow selection of
the SDL major version (2 or 3) from the -DSDL=n define.
The SDL3 implementation is currently available as a preview release, 3.1.0, at
https://github.com/libsdl-org/SDL/releases/tag/prerelease-3.1.0
* Add updates for makefile-haiku.x86_64-sdl to prepare for SDL3
* Allow makeright to accept sdl3 as display type to ease SDL3 experiments
* Update CMakeLists.txt for SDL3 library
* Replaces configuration option -DMAIKO_DISPLAY_SDL=ON/OFF with
-DMAIKO_DISPLAY_SDL=OFF/2/3
* Replaces PUBLIC definitions with PRIVATE definitions on targets since
we are not exporting definitions outside this local compilation
* Update messages to indicate which version of SDL is being configured
* Add fixup for SDL3.xcframework on macOS to compensate for missing
RPATH specification (CMake issue 25998)
Remove unused #include "miscstat.h"
Make parameters of cursor_equal_p both const
Remove unnecessary extern declarations for EmKbdAd068K, EmRealUtilin68K, MiscStats
Rationalize the SDL.h include file references so that they work on all systems
Use the correct macOS Framework options to get include path and library search path
Add makefile fragments for SDL on macOS on Apple Silicon, plus FreeBSD and Linux
on same cpus as X11
Switch to gcc rather than clang as the default compiler for Linux systems
Use the Lisp type DLword where referring to data stored by Lisp
Access the extern EmCursorBitMap68K directly where appropriate.
Use GETBYTE() macro to correct for endian-ness of host system
when accessing the cursor bitmaps.
Cached cursors can use an ordering strategy that only promotes the
found item if it is third or later in the list since in normal
operation Medley is highly likely to flip back-and-forth between
two cursors.
sdl_bitblt_to_texture2 is an experiment, parallel to sdl_bitblt_to_texture
that only moves as many bits as are required, rather than rounding down(up) to the
nearest (16-bit) word boundary for the start(end) of the line.
Introduces some name changes to make things a little clearer.
Instead of checking "do_invert" at each pixel assignment, assign the
foreground and background colors appropriately when responding to the
(VIDEOCOLOR x) call.
Modify sdl_bitblt_to_texture() so that it does less arithmetic in the inner loop,
including using a table of masks rather than computing 1<<n on each pixel.
Modify sdl_bitblt_to_texture() so that it accesses the Lisp display region
16-bits at a time with the correct ordering for whether we are on a byte-swapped
system or not.
Adds an sdl_blt_to_window_surface() that goes directly from the Lisp bitmap
to the window surface avoiding the intermediate copy. This is only coded for a
scale factor of 1. Uses the intermediate buffer if the scale is not 1.
Corrects an error where the damage rectangle was not properly reset.
Using SDL_LockTexture/SDL_UnlockTexture we can gain more direct access to the pixels of the
texture and update them directly from the Lisp screen bitmap.
At the same time, for both the rendering case and the display surface case,
update the pixel format used to be either the first (presumably preferred?)
format for a texture, or the surface format of the window.
Use the SDL routines to pick out the pixel value for Black and White based on the
destination it will be placed in.
If the preprocessor symbol SDLRENDERING is defined the code operates as
it previously did. In the absence of that, we process the Lisp bitmap
into an intermediate form (as before) but then use SDL bitblt to
redraw the intermediate form on the window's surface.
On startup, bitblt calls may be made for the original screen size
and if the new screen size is smaller than that, we must ensure
that damage notifications are contained within the new screen.
Move definition of min() so we can use it in sdl_notify_damage()
Build with cmake. This will create a new backend (ldesdl).
- Resolution can only be set by editing the variables in sdl.c.
- Key repeat does not work.
- Still problems with keysyms that implicitly contain modifiers.
- The entire screen is bitblted onto the SDL display every frame.
Support keyboard, and work on mouse.
Kind of working...
Fix display resolution problems.