Gabriel Ravier
2911bfda5c
Removed memory leak in Backend_LoadGlyph
...
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-01-06 18:26:25 +01:00
Gabriel Ravier
752b4cee3f
Correct bug in which Backend_LockSurface would not initialize surface->pixels, leaving a bug in which Backend_UnlockSurface used uninitialized values in certain scenarios (such as in ScaleAndUploadSurface)
...
Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
2020-01-06 18:26:25 +01:00
Clownacy
df534bb612
Fix SDLTexture backend's linked-list
...
Was causing some use-after-free behaviour, according to valgrind.
Should fix #87
2020-01-06 14:48:56 +00:00
Clownacy
4b8a6849d3
Actually make the surface regeneration work
2019-09-06 22:13:00 +01:00
Clownacy
4e239c3175
Restore the rendering backend callbacks
...
Now the SDLSurface backend survives window resizes (also triggered by
alt-tabbing while in fullscreen), and the SDLTexture backend properly
regenerates its textures after a fullscreen alt-tab in DirectX mode.
2019-09-06 19:07:49 +00:00
Clownacy
fd855ee732
Restore the new renderers
2019-09-02 22:46:36 +01:00
Clownacy
f956eb9264
Mostly ASM-accurate Draw.cpp
...
See #74
2019-08-31 17:43:45 +01:00
Clownacy
43f7087ffb
Shut up a warning in the SDLTexture renderer backend
2019-08-25 21:30:44 +01:00
Clownacy
ce8b5651bc
Give the FONT_PIXEL_MODE enums a type
2019-08-21 16:25:02 +00:00
Clownacy
22dc6836c5
Shut up a warning
2019-08-14 17:57:19 +00:00
Clownacy
56adcd9dfe
Convert SDLTexture glyphs to static textures
...
This way they don't need regenerating in the first place.
2019-08-14 17:06:16 +00:00
Clownacy
4f057dd72a
Revert "Split glyph surface creation and pixel upload"
...
This reverts commit 5da3b72fca
.
2019-08-14 16:30:48 +00:00
Clownacy
5da3b72fca
Split glyph surface creation and pixel upload
...
When DirectX-SDL2 loses its device, it doesn't lose its textures,
just their contents, so we shouldn't remake the textures when we
regenerate the glyphs (that's coming next commit).
2019-08-13 18:02:14 +01:00
Clownacy
29c84ae222
Fixes
2019-08-13 06:36:31 +00:00
Clownacy
dddf968810
Backend_SupportsSubpixelGlyph -> Backend_SupportsSubpixelGlyphs
2019-08-13 05:14:37 +00:00
Clownacy
03f797a267
Pretty sure these #includes aren't needed
2019-08-13 05:11:40 +00:00
Clownacy
d47f683491
Ported the Windows version's surface regeneration
...
Has the same imperfections: if you regenerate the surfaces while a
text box is open (and while using Courier New I guess), the text will
regenerate with smaller spaces.
2019-08-13 04:36:05 +00:00
Clownacy
1ca240d8ee
Render backend simplification part 3: SDLTexture
...
Stripped out all the software-fallback stuff, since I'll be replacing
it soon, and the new API would require a slight refactor anyway.
2019-08-13 02:54:10 +00:00
Clownacy
85f58d7d39
Rendering backend API naming improvements
2019-08-10 19:50:10 +01:00
Clownacy
2b86db32a0
Backend_Blit always uses a colour key
2019-08-10 19:31:45 +01:00
Clownacy
8acd46bce6
Move the font gamma-correction up to Font.cpp
...
Reduces duplicate code
2019-08-08 05:04:08 +00:00
Clownacy
7e926451de
Optimise the gamma-correction
...
I should probably create a Common.cpp file or something
2019-08-08 02:59:02 +00:00
Clownacy
6a040c2248
Add missing #includes to rendering backends
2019-08-01 13:32:27 +00:00
Clownacy
42765792bc
Shut up some warnings
2019-07-31 04:41:46 +00:00
Clownacy
aa728979a3
Fix the Texture backend not rendering text the accurate buggy way
...
A shame I have to fall back on the Surface fallback. Speaking of, I
really need to replace that fallback with my software renderer.
2019-07-25 00:39:03 +01:00
Clownacy
defe234ff2
Clean up some ugly formatting
2019-07-25 00:09:10 +01:00
Clownacy
145864cf2d
Added sanity checks to the backends
...
This fixes the Texture backend bug that made the program take forever
to shut down:
The problem was that the font system would try to load a glyph that's
0 pixels wide/tall (likely the space character), which SDL2 didn't
like, so it would fail to allocate the texture, causing
Backend_CreateSurface, and by extension Backend_CreateGlyph, to
return a NULL. Later, upon shutdown, the font system would pass this
NULL to Backend_FreeGlyph, causing NULL pointer dereferences that
make the program take forever to shut down.
Personally, I think passing NULLs to the backend is valid behaviour,
so I've added a bunch of sanity checks to make sure they're never
dereferenced.
2019-07-24 23:34:16 +01:00
Clownacy
9948fa8b07
Move the SDL_Window creation to the rendering backends
...
Whoops, didn't mean to commit the Main.cpp edit way back when I made
the OpenGL 2.1 backend.
2019-07-24 20:20:06 +01:00
Clownacy
0ce05e1837
Move a function
2019-07-23 23:13:57 +01:00
Clownacy
e170485849
Document a "bug" in the SDL_Texture backend
2019-07-23 23:11:24 +01:00
Clownacy
e2054918a6
Font refactor part 3: SDL_Texture
...
Getting kinda messy, having to maintain two different ways of
drawing - colour-key and alpha-blending. In the enhanced branch,
which uses alpha-blending for everything, these can be merged.
I'm noticing a huge delay in shutdown time. There's probably a bug
in here.
2019-07-23 21:49:40 +01:00
Clownacy
74c9931ebb
Change the renderer backend API for uploading pixels
...
Also fix some blatant build errors. I must be going mad - I swear
I've fixed that typedef thing like twice already.
2019-07-19 08:45:59 +01:00
Clownacy
44456e4a25
Add an SDL_Surface-based renderer
...
Ha, my custom software renderer is faster!
2019-07-17 16:09:18 +01:00
Clownacy
f21f17f4c2
Cleanup
2019-07-17 14:13:49 +01:00
Clownacy
7c12e7817c
Use SDL_ALPHA_OPAQUE
2019-07-16 00:37:31 +01:00
Clownacy
81eb438482
Fixes and tweaks
2019-07-16 00:15:20 +01:00
Clownacy
6a4f4e0df3
Added handlers for render target loss/window resize
...
These only really happen when you use exclusive fullscreen and
alt-tab out. Or, at least, it does on Windows with SDL2 in DirectX
mode.
2019-07-15 17:47:22 +01:00
Clownacy
b84661d88a
Move the backend files around a bit
2019-07-15 17:01:42 +01:00