Commit graph

2909 commits

Author SHA1 Message Date
Sam Lantinga
60296780e3 Standardized on using the managed texture pool.
Also experimented with dynamic textures, but didn't get any speed increase with them.  More research and testing is needed.
2011-02-04 12:25:26 -08:00
Sam Lantinga
d8fd1e0861 Don't free the surface since the application might be still using it.
Also experimented with texture rectangle updates, but I think at this point the full rect update gives the most consistent results.
2011-02-04 12:24:28 -08:00
Sam Lantinga
1ed5bd8dd1 Removed unused variables 2011-02-04 12:22:52 -08:00
Sam Lantinga
125e56851f Switched the SDL 1.2 compatibility to use the window surface, so it's fast even when there's no hardware acceleration available.
This means that the YUV overlay now uses software, but that's okay since fast YUV code should be using the textures now anyway.
2011-02-03 21:13:55 -08:00
Sam Lantinga
1fc2b68be2 Fixed recursion crash when setting SDL_VIDEO_RENDERER=software 2011-02-03 17:42:58 -08:00
Sam Lantinga
4f0e222a0b Fixed crash if SDL_VideoDriverName() is passed a NULL namebuf 2011-02-03 16:57:38 -08:00
Sam Lantinga
052351dbe2 Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
The software renderer has been re-routed to use the framebuffer interface, which makes it possible to have software rendering available even on simple ports.
2011-02-03 15:49:37 -08:00
Sam Lantinga
657d4fd190 Extended SDL_SetWindowData() to allow arbitrary named values. 2011-02-03 11:16:57 -08:00
Sam Lantinga
c1295241c6 Making the API simpler, moved the surface drawing functions to the software renderer.
--HG--
rename : src/video/SDL_blendline.c => src/render/software/SDL_blendline.c
rename : src/video/SDL_blendpoint.c => src/render/software/SDL_blendpoint.c
rename : src/video/SDL_draw.h => src/render/software/SDL_draw.h
rename : src/video/SDL_drawline.c => src/render/software/SDL_drawline.c
rename : src/video/SDL_drawpoint.c => src/render/software/SDL_drawpoint.c
2011-02-03 02:45:29 -08:00
Sam Lantinga
6ddcc36edf Fixed building for Android 2011-02-03 01:30:28 -08:00
Sam Lantinga
6950191fad Create the video texture based on the available texture formats, not the backbuffer format. 2011-02-03 01:13:48 -08:00
Sam Lantinga
fe2b0d9703 Simplified and improved the process of creating a texture from a surface. 2011-02-03 00:54:29 -08:00
Sam Lantinga
31b3ad2414 Making the API simpler, removed the writepixels interface 2011-02-03 00:22:18 -08:00
Sam Lantinga
d2b54f7d24 Made it possible to create a texture of any format, even if not supported by the renderer.
This allows me to reduce the set of formats supported by the renderers to the most optimal set, for a nice speed boost.

--HG--
rename : src/video/SDL_yuv_mmx.c => src/render/SDL_yuv_mmx.c
rename : src/video/SDL_yuv_sw.c => src/render/SDL_yuv_sw.c
rename : src/video/SDL_yuv_sw_c.h => src/render/SDL_yuv_sw_c.h
rename : src/video/mmx.h => src/render/mmx.h
2011-02-03 00:19:40 -08:00
Sam Lantinga
5897ef7d95 Moved the rendering code out to a separate directory in the hope that it can someday be completely decoupled from the rest of the library and be expanded to an awesome 2D on 3D library.
--HG--
rename : src/video/windows/SDL_d3drender.c => src/render/direct3d/SDL_d3drender.c
rename : src/video/SDL_renderer_gl.c => src/render/opengl/SDL_renderer_gl.c
rename : src/video/SDL_renderer_gles.c => src/render/opengles/SDL_renderer_gles.c
rename : src/video/SDL_renderer_sw.c => src/render/software/SDL_renderer_sw.c
2011-02-02 14:34:54 -08:00
Sam Lantinga
a47948aab0 Nobody is currently maintaining the QNX code, so removing it for now. 2011-02-01 21:40:03 -08:00
Sam Lantinga
09a8558897 Making the API simpler, removed support for palettized video modes and textures. 2011-02-01 21:23:43 -08:00
Sam Lantinga
b4fff42fc6 The DrawRect API is implemented using lines 2011-02-01 20:50:04 -08:00
Sam Lantinga
df94d4c6a4 The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multi-threaded rendering in the future. 2011-02-01 19:19:43 -08:00
Sam Lantinga
52cf8a6451 Added functions to watch events as they go through the event queue. 2011-02-01 19:15:42 -08:00
Sam Lantinga
b231d0b93d Split the rendering API out into a separate header file. 2011-02-01 15:02:21 -08:00
Sam Lantinga
6539ab9c74 The renderers always support texture modulation and blend modes. 2011-02-01 12:54:27 -08:00
Sam Lantinga
d627939049 Making the API simpler, the renderer present semantics are always having a backbuffer and then discarding it. This is best for hardware accelerated rendering.
--HG--
extra : rebase_source : bbe6641fce097c79ccd47f4e1ea6b27683fd0acb
2011-02-01 12:19:46 -08:00
Sam Lantinga
4c06e58153 Making the API simpler, texture color and alpha modulation are supported by all renderers.
--HG--
extra : rebase_source : 880752438aae8f6526503d220bad91aabc3a7d1c
2011-01-31 23:37:30 -08:00
Sam Lantinga
825e1da54d Making the API simpler, the blend modes are "none, blend, add" and are supported by all renderers.
--HG--
extra : rebase_source : f06ea01caa64c8ad14170c723e5af52dad64d779
2011-01-31 23:23:57 -08:00
Sam Lantinga
372693d86f Removed more partially functional renderers
--HG--
extra : rebase_source : d00f0590e133604070f978762a6728b4afde02ca
2011-01-31 22:53:45 -08:00
Sam Lantinga
df1f384c5b Making the API simpler, scaling is always defined as linear interpolation and should be supported as much as possible on all renderers.
--HG--
extra : rebase_source : 4edac7fd162a2eb37a50159b958db37a03e944a5
2011-01-31 22:44:43 -08:00
Sam Lantinga
9c12618379 Removed partially functional renderers
--HG--
extra : rebase_source : 3fc2560c02393bf9e7c46360fc24f2585c9409be
2011-01-31 22:21:29 -08:00
Sam Lantinga
64ac326041 Fixed bug #1025 (iphone keyboard doesn't send 'return' and 'backspace' events)
Vittorio Giovara      2011-02-01 02:25:48 PST

i have attached an updated patch that fixes this behaviour
2011-02-01 09:04:43 -08:00
Sam Lantinga
3752cf5872 Fixed spacing, adding vim spacing hints 2011-02-01 09:02:53 -08:00
Sam Lantinga
220fd4679a Added vim spacing hints 2011-02-01 09:00:47 -08:00
Sam Lantinga
c9c3d0381a Fixed spacing 2011-02-01 08:59:22 -08:00
Sam Lantinga
3a83076de1 Fixed bug #1112 (retina display support)
Vittorio Giovara      2011-02-01 02:21:50 PST

with the attached patch, the opengles context will always use the maximum
screensize available; this is particularly useful for supporting retina display
on latest iphone.

please note: Apple documentation warns that using the "upscaled" gl context
actually uses more memory and bandwitdh, so it might be worth to let the user
decide whether to disable it or not, either with a flag or a sdl function...
2011-02-01 08:54:34 -08:00
Sam Lantinga
6391828105 Fixed spacing 2011-02-01 08:53:22 -08:00
Sam Lantinga
b13cdc5d2c Fixed bug #1111
kwm@rainbow-runner.nl      2011-01-30 06:28:27 PST

Created attachment 562 [details]
Build fix with clang.

When building sdl 1.2.14 with the Clang compiler http://clang.llvm.org .
The build fails in src/video/mmx.h with the following error:

--------------------------------------------------
./src/video/SDL_RLEaccel.c:831:5: error: invalid operand for instruction
    CHOOSE_BLIT(RLECLIPBLIT, alpha, fmt);
    ^
./src/video/SDL_RLEaccel.c:831:17: note: instantiated from:
    CHOOSE_BLIT(RLECLIPBLIT, alpha, fmt);
                ^
./src/video/SDL_RLEaccel.c:831:5: note: instantiated from:
    CHOOSE_BLIT(RLECLIPBLIT, alpha, fmt);
    ^
./src/video/SDL_RLEaccel.c:647:23: note: instantiated from:
                                blitter(2, Uint8, ALPHA_BLIT16_565MMX); \
                                                  ^
./src/video/SDL_RLEaccel.c:282:4: note: instantiated from:
          movq_r2m(mm3, *dstp);                         \
          ^
In file included from ./src/video/SDL_RLEaccel.c:99:
./src/video/mmx.h:379:28: note: instantiated from:
#define movq_r2m(reg, var)      mmx_r2m(movq, reg, var)
                                ^
<scratch space>:192:1: note: instantiated from:
"movq"
^
<inline asm>:1:2: note: instantiated into assembly here
        movq %mm3, %dx
        ^
--------------------------------------------------

According to the clang developers this is a invalid inline assembly.
Using the attached patch from the last commit in the below bug report fixes the
compile.
More details from: http://llvm.org/bugs/show_bug.cgi?id=6730
2011-01-30 13:42:05 -08:00
Sam Lantinga
e64d0e8d85 Fixed bug #1056 (Frequent crashes in Touch events by simply touching the screen)
Joseba García Echebarria      2010-12-15 01:55:22 PST

I believe the crash is caused by a check not being performed on wether an
SDL_Touch element is NULL before using it in the SDL_SendTouchMotion function
in src/events/SDL_touch.c around line 400.
Judging from the rest of the code, there's a missing

    if (!touch) {
        return 0;
    }

before using "touch" as SDL_GetFinger(), SDL_GetFingerIndexId() use
touch->num_fingers without checking.

I can attach a patch if you like. It seems pretty straightforward, though.

I have yet to discover why touch is being returned as NULL as this error is
only triggered when an actual gesture has been performed, maybe something
related to SDL_AddTouch()?
2011-01-28 10:21:58 -08:00
Sam Lantinga
c3daf0f0cd Removed completely non-portable event thread hack.
Next I'll be working on generalizing the event sources and making the event queue lock-free. :)
2011-01-27 22:44:08 -08:00
Sam Lantinga
b2ff9dc39f Added API function to get CPU cache line size. 2011-01-27 20:46:45 -08:00
Sam Lantinga
fb824f9a04 Added cache line size info in SDL_cpuinfo.h
I also added an implementation to dynamically query it, but didn't expose it since most x86 CPUs have an L1 cache line size of 64 bytes.
2011-01-27 16:46:15 -08:00
Sam Lantinga
1d518f0d73 Fixed compiling under Visual Studio 2011-01-27 15:31:00 -08:00
krogoway
e253e1d991 When the last window is closed and the SDL_WINDOWEVENT_CLOSE event is sent, send the SDL_QUIT event.
Common.c now destroys the SDL_Window upon a SDL_WINDOWEVENT_CLOSE event to ensure that all windows get closed properly and the new code to handle the last window closes gets executed.
2011-01-27 15:58:30 -06:00
Sam Lantinga
dd4f2c1339 Improved timer implementation
The new timer model is formalized as using a separate thread to handle timer callbacks.  This was the case on almost every platform before, but it's now a requirement, and simplifies the implementation and makes it perform consistently across platforms.

Goals:
 * Minimize timer thread blocking
 * Dispatch timers as accurately as possible
 * SDL_AddTimer() and SDL_RemoveTimer() are completely threadsafe
 * SDL_RemoveTimer() doesn't crash with a timer that's expired or removed
2011-01-27 14:45:06 -08:00
Sam Lantinga
2fd57ffe61 Improved condition variable documentation 2011-01-27 10:40:17 -08:00
Sam Lantinga
1bdfc84ec9 Fixed bug #1109
Ozkan Sezer      2011-01-26 12:33:42 PST

I got warnings from SDL_windowskeyboard.c when I compiled for win64.
2011-01-27 08:40:06 -08:00
Sam Lantinga
b58487d8bb Colin Leroy 2011-01-26 04:24:20 PST
the pthread implementation of SDL_SemWaitTimeout() uses busy waiting, while
pthread's sem_timedwait() does work. Attached are patches that make use of it
2011-01-27 00:34:12 -08:00
Sam Lantinga
d06966d7f2 Nobody is maintaining RISC OS code, so I'm removing it for now. 2011-01-27 00:06:36 -08:00
Sam Lantinga
fc5dc0ddb2 More fixes for compilation on Visual Studio 2011-01-25 18:02:41 -08:00
Sam Lantinga
29e0bf97e0 Improvements based on feedback from Anthony Williams 2011-01-25 17:40:06 -08:00
Sam Lantinga
7327ef6bb9 Fixed cross-compiling for Windows 2011-01-24 21:41:36 -08:00
Sam Lantinga
ada074623f Fixed Android build 2011-01-24 21:31:32 -08:00