Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDL_ListModes on winCE #49

Closed
SDLBugzilla opened this issue Feb 10, 2021 · 0 comments
Closed

SDL_ListModes on winCE #49

SDLBugzilla opened this issue Feb 10, 2021 · 0 comments

Comments

@SDLBugzilla
Copy link
Collaborator

This bug report was migrated from our old Bugzilla tracker.

These attachments are available in the static archive:

Reported in version: 1.2.8
Reported for operating system, platform: Windows (CE)/PocketPC, x86

Comments on the original bug report:

On 2006-01-22 03:35:33 +0000, Sam Lantinga wrote:

Date: Mon, 21 Nov 2005 12:24:12 -0800
From: Peter Hanely cal@splitreflection.com
Subject: [SDL] SDL_ListModes on winCE

As of the latest SDL source I've looked at (1.2.8), SDL_ListModes
returns -1 on winCE, implying any resolution is valid. Would it not
make more sense to return a mode for the current desktop window size?
Code along the lines of:
resx = GetDeviceCaps(GetDC(NULL), HORZRES);
resy = GetDeviceCaps(GetDC(NULL), VERTRES);
should retrieve the info according to research. (test and verify pending)

Also, when running in windowed mode it may be desired to know the max
window size that'll fit.

On 2006-01-22 03:36:44 +0000, Sam Lantinga wrote:

This is actually a valid comment for any platform. There should probably be some way of querying the desktop resolution (on platforms that have a desktop)

On 2006-01-22 03:38:27 +0000, Sam Lantinga wrote:

As of the latest SDL source I've looked at (1.2.8), SDL_ListModes
returns -1 on winCE, implying any resolution is valid. Would it not
make more sense to return a mode for the current desktop window size?

I don't really know how the WinCE port works, is it always fullscreen? If so, then your fix seems reasonable. If there are "windows", then this is consistent with the rest of the drivers (-1 for windowed mode, list for fullscreen mode)

On 2006-01-22 03:43:24 +0000, Ryan C. Gordon wrote:

Dmitry's new GAPI driver for PocketPC from Bug # 47 implements SDL_ListModes correctly for this platform, and is now in CVS, which should get you what you need.

--ryan.

*** This bug has been marked as a duplicate of 47 ***

On 2006-01-23 01:09:17 +0000, Dmitry Yakimov wrote:

WinCE GAPI patch correctly implements SDL_ListModes for GAPI that is always fullscreen. WinDib driver supports Win32 and WinCE at the same time, so DIB_ListModes recognize SDL_FULLSCREEN OK but I found that for WinCE WinDib is compiled with #define NO_CHANGEDISPLAYSETTINGS so it returns -1 all the time. (In fact WinCE apps could be non fullscreen). So I will fix WinDib SDL driver. Thank you Peter.

--Dmitry

On 2006-01-27 11:23:20 +0000, Ryan C. Gordon wrote:

Setting Sam as "QA Contact" on all bugs (even resolved ones) so he'll definitely be in the loop to any further discussion here about SDL.

--ryan.

On 2006-03-02 15:04:42 +0000, Dmitry Yakimov wrote:

Fixed!
As well new patch contains:

  • SDL_config_wince.h for WinCE optimal settings.
  • updated evc3/4, VS 2005 projects of SDL.
  • added LoopWave example (please update loopwave.c too to be compiled on wce)
  • new SDL build manner updated for wince.

-- Dmitry

On 2006-03-02 15:05:54 +0000, Dmitry Yakimov wrote:

Created attachment 74
diff + updated project files

On 2006-03-02 23:57:01 +0000, Sam Lantinga wrote:

(In reply to comment # 7)

Created an attachment (id=74) [edit]
diff + updated project files

I committed a version of loopwave.c updated with generic versions of your changes, thanks!

I'm looking at the diff now, and it seems like sometimes you use a (new?) symbol WINCE and sometimes you use the normal _WIN32_WCE symbol. I don't see where WINCE was defined. I was simply treating Windows CE as WIN32 with a specialization as _WIN32_WCE where necessary.

In SDL_getenv.c, you use WINCE_ instead of WINCE at one point.

In SDL_systhread.h, you added WINCE to the WIN32 || OS2 check. Is WIN32 not defined in your setup?

You've reverted some changes in SDL_gapivideo.c and SDL_gapivideo.h, it appears accidentally. It should have the new copyright notice and should use relative include paths.

I don't understand the patch in SDL_wingl.c at all:
@@ -96,7 +96,7 @@
where = SDL_strstr(start, extension);
if (!where) break;

  •           terminator = where + SDL_strlen(extension);
    
  •           terminator = where + (extension);
    

Is that really correct?

Instead of platform #ifdef'ing GetWindowLong, I was going to do this:
#ifndef GetWindowLongPtr
#define GetWindowLongPtr GetWindowLong
#endif
... etc. somewhere convenient - maybe in the SDL_config_*.h

On 2006-03-02 23:57:41 +0000, Sam Lantinga wrote:

Could you take a look at these and submit an updated patch?

Thanks!
--Sam

On 2006-03-03 08:13:02 +0000, Dmitry Yakimov wrote:

WINCE is defined in SDL_platform.h (in diff).

I was simply treating Windows CE as WIN32 with a specialization as _WIN32_WCE where necessary.

It seems to be correct. But it is better to make different config file for wince, just because there are many small differences.
May be it is better to add SDL_config_wince.h but not to add WINCE

In SDL_getenv.c, you use WINCE_ instead of WINCE at one point.

oops, mistyped :)

  •           terminator = where + SDL_strlen(extension);
    
  •           terminator = where + (extension);
    

I did not add that line, do not know where it comes from.
May be just was quick selected and deleted, SDL_strlen(extension) seem to be correct version, of course.

I will review it. Thanks for your comments!

On 2006-03-03 09:15:16 +0000, Dmitry Yakimov wrote:

Created attachment 75
Diff + project files

Done! All the issues you noticed had been cleaned up.
Please review.

On 2006-03-03 09:20:31 +0000, Dmitry Yakimov wrote:

About loopwave.c - do you plan to sumbit wince specific additions?

-- Dmitry

On 2006-03-03 09:49:22 +0000, Dmitry Yakimov wrote:

Created attachment 76
forgotten SDL_config_wince.h

Added forgotten in the latest patch SDL_config_wince.h

On 2006-03-04 03:26:36 +0000, Sam Lantinga wrote:

Dmitry's patch is now in CVS!

Dmitry, I tweaked it a bit, so can you grab CVS to make sure everything works?
I built under eVC++ 3 and 4, and it seems fine here.
I did just use SDL_config_win32.h, since it seems to work well. Feel free to send me WinCE specific tweaks though.

On 2006-03-04 04:09:13 +0000, Dmitry Yakimov wrote:

It is much better to disable using SDL implementations of string.c because WinCE platform contains memcpy, memset and other functions embedded in coredll.dll that are much (several timer) faster even that DWORD copying (of course faster that single char SDL copying routine). These routines use ARM assembler tricks.

I'm to note that WinCE is an embedded platform without hdd and swap file, so its memory manager is optimized for such scenario and SDL internal malloc just won't do.

So it is highly desirable to use:

#define HAVE_MALLOC 1
#define HAVE_CALLOC 1
#define HAVE_REALLOC 1
#define HAVE_FREE 1
#define HAVE_ALLOCA 1
#define HAVE_MEMSET 1
#define HAVE_MEMCPY 1
#define HAVE_MEMMOVE 1
#define HAVE_MEMCMP 1
#define HAVE_STRLEN 1

in config file.

Did you check loopwave subproject? Current CVS version can't be compiled for wince because missed wince specific changes.

-- Dmitry

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant