Commit graph

3287 commits

Author SHA1 Message Date
Sunny Sachanandani
bce186d572 Implement blending modes for textures. Fix off-screen pixmaps to be ARGB rather than RGB to enable blending across frames. Clear the screen and off-screen pixmaps when the renderer is created. 2010-07-14 19:17:11 +05:30
Sunny Sachanandani
40daa46a40 Fix so many things that there is little place in this column to list them all but the result is that blending modes just work now for drawing primitives.
Fixes involved:
1. Fix handling of alpha channel when SDL_BLENDMODE_NONE is set.
2. Make xrendercolor use floating-point values for color channels and then convert to 16 bit ints.
3. Fix handling of visuals in SDL_x11modes.c so that a 32 bit ARGB visual is used.
4. Fix the background pixel value in SDL_x11window.c so that the window background has an alpha value of 0xFF and not 0.
2010-07-09 21:36:41 +05:30
Sunny Sachanandani
f0e9e6ac76 Fix blending modes for primitives. 2010-07-01 07:35:15 +05:30
Sunny Sachanandani
b8d6bdfa5a Preliminary support for blending modes on drawing operations. 2010-06-27 09:51:51 +05:30
Sunny Sachanandani
d0033d15a1 Texture rendering mostly works now. Even SDL_TEXTUREACCESS_STREAMING is supported now with a little overhead. Scaling of textures happens using XRender. :D 2010-06-22 20:01:38 +05:30
Sunny Sachanandani
3782e9a0c5 SDL_Textures should work with XRender now provided that the texture format and screen format match. This is only a temporary limitation. 2010-06-16 10:50:01 +05:30
Sunny Sachanandani
f499e5e7e5 X11_RenderDrawLines and X11_RenderDrawPoints use XRender now. 2010-06-15 19:10:06 +05:30
Sunny Sachanandani
bc858ad7cd X11_RenderFillRects and X11_RenderDrawRects use a server side mask pixmap of 1 bit depth now. All drawing on these pixmaps is done by server side functions such as XDrawRectangles and XFillRectangles. 2010-06-14 18:22:48 +05:30
Sunny Sachanandani
843724af72 X11_DrawRects now uses a very hacky way of drawing rectangles with XRender. This will be improved in some time. 2010-06-08 19:26:32 +05:30
Sunny Sachanandani
440a6894f5 It seems that the off-screen buffers (or pixmaps) only need to be cleared while initializing. 2010-06-02 11:55:40 +05:30
Sunny Sachanandani
75d7bf45f9 Fix X11_FillRects to work with double buffering as well as triple buffering. This requires that the buffer pixmap be cleared after every render. 2010-06-02 11:45:15 +05:30
Sunny Sachanandani
c323705090 Fix the rendering color channels to be premultiplied with the alpha channel as thats what Xrender expects. Small fixes in X11_CreateTexture. Add some new functions in SDL_x11sym.h as well as support for Xrender. 2010-06-02 09:01:37 +05:30
Sunny Sachanandani
99aee647e0 X11_RenderPresent now uses XRender to blit back-buffers to the screen. 2010-05-31 17:04:20 +05:30
Sunny Sachanandani
6f98c350da Xrender uses 16 bit color per channel. Fixed the color handling in X11_RenderFillRects to match this. Xrender just works now for filling rectangles :D . 2010-05-31 15:09:36 +05:30
Sunny Sachanandani
b4651b2a51 Modified configure.in to allow building with Xrender. Fixed all problems that prevented compilation.
Builds fine now :)
2010-05-31 13:27:27 +05:30
Sunny Sachanandani
9de49fce8f Add Xrender support to X11_FillRectangles. 2010-05-30 20:06:30 +05:30
Sunny Sachanandani
722be21623 Fix typo. 2010-05-28 20:48:58 +05:30
Sunny Sachanandani
66ba8d9f53 Fix initial value of the xrender_available boolean in X11_CreateTexture. 2010-05-28 20:47:24 +05:30
Sunny Sachanandani
7373f666db Completed work on X11_CreateTexture. Added lots of safety features.
These include support for drawing a texture using the core protocol
while other textures are drawn using Xrender if Xrender does not support
the color format of the said texture or any other fault with Xrender.
2010-05-28 20:40:09 +05:30
Sunny Sachanandani
aef216819f Correctly handle the availability of Xrender in X11_CreateRenderer and X11_DisplayModeChanged.
Fixed the XRenderPictureAttributes value in X11_CreateRenderer with graphics_exposures = False.

Start work on Xrender specific additions to X11_TextureData and X11_CreateTexture.
2010-05-26 20:11:56 +05:30
Sunny Sachanandani
dabea2387f Added a #define option for compile time Xrender support.
Added some more attributes (specific to Xrender) to the X11 structs.
Added some code for querying the Xrender extension.
2010-05-24 21:02:58 +05:30
Sunny Sachanandani
4ee62ed9e7 Adding a few #defines for Xrender support. 2010-05-19 18:58:28 +05:30
Sam Lantinga
d12afdaedb Add a default revision string if we can't find hg 2010-05-09 19:55:28 -07:00
Sam Lantinga
36bb08a19e Don't assume .bashrc exists. :) 2010-05-09 19:51:21 -07:00
Sam Lantinga
cc3f18a315 Tagging version before everything gets ripped out. 2010-05-09 17:00:56 -07:00
Sam Lantinga
76cf0cd0c0 Make the compiler even happier 2010-05-09 16:16:11 -07:00
Sam Lantinga
2a8171b8b7 Make sure events are current before flushing them. 2010-05-09 16:15:14 -07:00
Sam Lantinga
906341c826 Added missing header 2010-05-09 15:47:21 -07:00
Sam Lantinga
3bc34ef448 Removed unused variables 2010-05-09 15:46:19 -07:00
Sam Lantinga
06d5867775 Fixed compiler warnings 2010-05-09 15:33:10 -07:00
Sam Lantinga
74e352d011 Fixed variable use before initialize warnings 2010-05-09 15:24:31 -07:00
Sam Lantinga
0c3e29cd9c Removed unused variables 2010-05-09 15:24:05 -07:00
Sam Lantinga
dc6629fa52 Fixed Eric's changes to allow building from the command line. 2010-05-09 10:00:33 -07:00
Sam Lantinga
4a2cf3b976 Updated with the SDL 1.3 list of supported operating systems 2010-05-09 09:53:57 -07:00
Eric Wing
f7c1900153 Updated Mac Xcode project for refactored rwops automated test changes. 2010-05-09 07:00:28 -07:00
Eric Wing
6c9da257a1 Refactored automated rwops tests so read and write directories can be more easily customized.
The refactored tests were written in recognition that Mac and iPhone current working directories are usually not going to work. Resource directories are in bundles and write directories are restricted to certain areas. In theory, other platforms may have this problem too, hence the refactoring.

Also updated the Xcode iPhone project to use 3.2 as the Base SDK, but 3.1 as the Deployment SDK (for iPhone/iPad compatibility.)

--HG--
rename : test/automated/rwops/Test_rwopsbundlesupport.h => test/automated/rwops/TestSupportRWops.h
rename : test/automated/rwops/Test_rwopsbundlesupport.m => test/automated/rwops/TestSupportRWops_Cocoa.m
2010-05-09 06:58:30 -07:00
Eric Wing
4d5a9e42ba Fixes to automated test target for iPhone Xcode project.
Looks like there is a problem with the source code base. UIScreenMode and possibly a few other 3.2 only APIs have crept in. 3.2 is only available for iPad, and not iPhone/iPod Touch.
2010-05-08 08:23:46 -07:00
Eric Wing
1a24b61487 Exempted writable modes from bundle check on OS X since bundle areas are typically read-only. 2010-05-08 04:52:17 -07:00
Eric Wing
a67b7bdcab Adding testsdl (automated test) support to iPhone Xcode project (to match Mac Xcode project).
I haven't updated yet to the 3.2 SDK so SDL no longer builds for me so I can't yet verify if the new target completely works.
2010-05-08 01:12:55 -07:00
Eric Wing
95cc075a21 Added automated test to Xcode project plus needed changes to SDL_RWFromFile to be OS X bundle aware.
The Mac OS X project has a new target called testsdl which builds the automated test. I looked at using Xcode's native unit test support, but the impedance mismatch between the existing automated test structure and Apple's was more than I could handle.

As such, the testsdl application is a full blown proper OS X application, which means it is a self-contained .app bundle. This immediately revealed some problems from the automated test. The largest problem was the assumption about the current working directory and where to find resources. (I suspect Windows may have a similar problem depending on circumstance.) To open resources, the test was looking in directories relative to the SDL source directory, but this will not work well with self-contained .app bundles and Xcode which can place its built applications almost anywhere. And for real-world situations, this is pretty useless anyway.

So I modified SDL_RWFromFile to do special things on OS X. First, it will look for a file in the .app bundle. If not found, it will fallback and just call fopen as it used to do.

I also had to modify the automated test itself because it had a contrieved test which called fopen directly to do read from an existing FILE pointer. In addition, there was a write test. Since a .app bundle is likely going to be read-only, I added a special case for OS X to write to NSTemporaryDirectory.

I expect these changes should work for both Mac and iPhone OS (which includes iPad).

I will update the iPhone Xcode project next.

Finally, FYI, the X11 automated test seems to be failing. Below is my output.


Pending breakpoint 4 - "-[NSException raise]" resolved
Platform : All tests successful (2)
SDL_RWops : All tests successful (5)
Rect : All tests successful (1)
SDL_Surface : All tests successful (6)
Rendering with cocoa driver : All tests successful (3)
Assert Failed!
   Blit output not the same.
   Test Case 'Renderer x11'
   Test Suite 'Rendering with x11 driver'
   Last SDL error ''
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetWindowBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetWindowBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetWindowBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetWindowBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetWindowBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetWindowBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Sat May  8 00:30:34 iMacAL.local testsdl[71586] <Error>: kCGErrorIllegalArgument: CGSBindSurface: Invalid window 0xa150
Rendering with x11 driver : Failed 1 out of 4 testcases!
Rendering with dummy driver : All tests successful (3)
SDL_Audio : All tests successful (1)
Tests run with SDL 1.3.0 revision 1095906
System is running Mac OS X and is little endian
2010-05-08 00:54:22 -07:00
Ryan C. Gordon
b6ef5b01d8 Much improved multi-display support for iPad.
Fixes most issues and limitations, I think.
2010-05-02 05:08:12 -04:00
Ryan C. Gordon
953d5e65ea Test for system version in the Apple Recommended way.
(a similar test is output by Xcode for the iPhone View Application template).
2010-05-01 13:50:56 -04:00
Ryan C. Gordon
c236844aac Implemented SDL power APIs for iPhoneOS. 2010-04-30 00:39:31 -04:00
Ryan C. Gordon
4f49f9e01e Implemented display mode functionality for UIKit.
The iPad (and iPhoneOS 3.2) introduce both a larger screen and the ability to
 enumerate and configure external displays. This hooks up SDL's multi-display
 API to this new functionality, and removes the hardcoded iPhone resolution.
2010-04-29 22:53:18 -04:00
Sam Lantinga
33ffbdf29d Fixed bug 978
Yann Leprince      2010-03-31 11:07:53 PDT

Please add a #serial line as below to sdl.m4 and increase the serial number
with each revision of this file. This allows using aclocal --install, thereby
enabling automatic updating of sdl.m4 in SDL-based packages that distribute it.

# serial 1

The complete documentation and rationale for #serial can be found in the
Automake documentation:
<http://www.gnu.org/software/automake/manual/html_node/Serials.html>.
2010-04-23 02:19:34 -07:00
Sam Lantinga
cd734eee3a esigra 2010-04-17 03:53:57 PDT
If this header file is supposed to be includable from C++ code, the code should
of course use one of the SDL_*_cast macros from SDL_stdinc.h.
2010-04-23 02:15:05 -07:00
Jjgod Jiang
4a9fad4714 Fix a crash caused by empty keyboard focus
---
 src/events/SDL_keyboard.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
2010-04-20 07:16:42 -07:00
Sam Lantinga
5740f12d7b changeset: 4434:4e5dd7dc58cd
tag: tip
user: Jjgod Jiang <gzjjgod@gmail.com>
date: Fri Apr 16 13:20:33 2010 +0800
summary: Fix window height calculation for text input rect
2010-04-15 22:27:50 -07:00
Sam Lantinga
fc440f959f Minor cleanup on Jiang's patch 2010-04-15 22:27:01 -07:00
Sam Lantinga
f9a8341561 changeset: 4433:25667ea797fa
tag: tip
user: Jiang Jiang <gzjjgod@gmail.com>
date: Thu Apr 15 12:01:46 2010 +0800
summary: Add windowID to text editing event
2010-04-15 22:14:26 -07:00