Commit Graph

522 Commits

Author SHA1 Message Date
janwas debd047638 proper definition of wchar_t (if needed; currently not)
This was SVN commit r3465.
2006-02-03 20:45:36 +00:00
janwas 1227cb2f6d adts: add RingBuf self-test. RingBuf: make entry#0 the 'head' and pop_front a no-op if empty.
allocators: allow pool_create at NLSO ctor time
lib: add rand() function based on libc rand and self-test. (this allows
easily returning a random number within a range, and avoids a number of
pitfalls - the naive rand()%range approach is baaad)
precompiled: add self_test.h, so that self tests won't be accidentally
disabled by forgetting to include the header

file_cache: add self-test; fixed 2 bugs that exposed (was incorrectly
splitting large blocks and not setting class_size bit properly). fix
weird corner case in BlockMgr (attempting to free LRU block but it is
locked).

file_io, wdbg_sym: tiny fixes

This was SVN commit r3461.
2006-02-03 04:02:53 +00:00
olsner fcfa746244 Linux compat changes, fix for (really old) bug in VertexBufferManager shutdown, GUI header reorganization for gcc 4.0
This was SVN commit r3437.
2006-01-29 18:23:47 +00:00
janwas 7838627cd2 - vfs_load now returns error code and takes FileIOBuf; that must be freed via file_buf_free. if Handle is needed, use mem_wrap.
- remove ScEd hacks and CFont et al macro rename
- fix accursed bug in VFS buffer management that was causing ReadFile to
fail without error (not allocating enough padding)
- vfs_tree: bugfix in tree_lookup
- waio: temporarily disable sector size determination (pending better
approach - need to determine if using DVD drive)

This was SVN commit r3421.
2006-01-24 08:16:29 +00:00
janwas f8b9114b17 wdbg: fix FOURCC usage (fixes exception locus reporting)
others: fix various minor warnings

This was SVN commit r3415.
2006-01-23 08:02:08 +00:00
janwas 32aca79221 allocator: add single_calloc (generalization of code previously in wposix for WDIR); add da_reserve; expand pool allocator to allow variable size entries
byte_order: add FOURCC_BE and _LE versions (needed for zip)
ogl: quick hack: prevent crash on laptop by providing a
pglDrawRangeElementsEXT stub
file, h_mgr: update pool_alloc call site

tex: fix incorrect indexing/stride for mipmap generation

vfs_mount: disable archives (zip code is WIP)
zip: heavy WIP. add support for writing archives (needed for thesis);
revised Zip read code. sped up archive open. further major changes
pending.

wposix: moved allocator code (see above)

This was SVN commit r3298.
2005-12-28 20:29:22 +00:00
janwas 6d137a5c41 wsdl: fix incorrect handling of mouse leaving the window. split complicated if logic into separate function.
wposix: use Liberror_set_errno
various other improvements spotted while looking through code.

This was SVN commit r3281.
2005-12-23 00:27:29 +00:00
prefect 3ea5fa5b46 Lots of fixes for the Linux build:
- renamed sysdep/unix/ functions where necessary
- more int -> LibError conversions in the sysdep/unix/ part
- added some explicit #include statements where necessary
- moved enum LibError/ErrorReaction declarations
  (gcc doesn't support forward enum declarations)

This was SVN commit r3267.
2005-12-17 22:00:54 +00:00
janwas 6e82e33ccf - display_msg and display_error -> debug prefix since in debug header
- debug_warn_err now takes LibError
- lib_error.cpp: revise error code -> string (only support liberror
now); add function to set errno from LibError
- unifont, CFont: parameter made a simple wchar_t from const wchar_t&
- mmap now sets errno
- Loader and VfsUtil function now return LibError as well
- Profile.cpp, ProfileViewer.cpp: fix int/uint/size_t warnings
- Renderer.cpp: fix cannot-generate-assignment-operator warning

This was SVN commit r3235.
2005-12-12 19:19:30 +00:00
janwas 1c1200a049 - massive overhaul of lib error code returning. int -> LibError everywhere.
- add translators from errno and GetLastError to LibError
- clarified return values of callbacks (they must return
INFO_CB_CONTINUE to continue)
- this exposed a few bugs in error handling chains (returning incorrect
values); also reduced say-nothing instances of return -1.
- move CHECK_ERR etc. macros to lib_error

This was SVN commit r3229.
2005-12-11 22:23:55 +00:00
janwas 7e6d38314d allocators: fix OverrunProtector - avoid crash at exit if the object was never actually used
lib: add display_msgw which is a wrapper around the sys_display_msgw
impl and takes care of translating text
lib_errors: codes are now an enum (this will allow a special return type
and make documentation much more clear); codes are defined in the
header, not from lib.h
wsdl: resolve todo comment

This was SVN commit r3217.
2005-12-10 07:04:31 +00:00
janwas c16227df06 slight tweak to asm code - improve alignment and remove temp R..R/W..W memcpy interleaving
This was SVN commit r3209.
2005-12-08 17:26:08 +00:00
janwas b242eafd02 various small fixes; some changes as in previous rev (which was only the files in lib/)
split a part of win.cpp up into wsysdep
GameSetup: bugfix for incorrect window title text

This was SVN commit r3204.
2005-12-07 03:44:17 +00:00
janwas e2f25f4598 - self test: rename stuff to SELF_TEST*; add provision for delayed all-at-once self tests (allows for init before the test and makes measuring elapsed time easier)
- config: add CONFIG_TRACE
- display_error_impl->sys_display_error
- cleaned up sysdep; add sys_ prefix everywhere and document everything
- add to vfs_load dox
- cursor: sys_cursor_load -> sys_cursor_create. sysdep code is no longer
dependent on tex; instead of calling tex_load, the caller passes a BGRA
texture in.
memcpy: huge kick in the pants for accompanying paper; now even faster.
- on_each_cpu -> sys_on_each_cpu (removed manager function also)
- wsdl: explain PeekMessage CPU usage issue

This was SVN commit r3203.
2005-12-07 03:38:39 +00:00
janwas efbe061214 rename lib/errors.* to lib/lib_errors.* due to conflict with ps/errors.*
also add sys_error_description_r backend for unix

This was SVN commit r3160.
2005-11-19 22:59:16 +00:00
janwas 59f9e37930 lib error codes moved to errors.h and made X macros. this allows adding a corresponding text message, which is now output by debug_warn_err.
vfs_path, tex, tex_codec: small tweaks to error-related code.

This was SVN commit r3158.
2005-11-19 18:12:16 +00:00
janwas d5d6e4052e lib: only debug_warn in UNREACHABLE in paranoia builds - avoids lots of warnings in debug mode
cursor: fix definition of ALLOW_SYS_CURSOR and use DDS instead of PNG
ogl_tex: add ogl_tex_transform_to for convenience
tex: fix issue with transform code (might not flip image if it was DDS)
win: decompress cursor texture if it was DDS
renderer: use DDS instead of PNG for alpha maps

This was SVN commit r3148.
2005-11-18 16:23:39 +00:00
janwas eee7fca2d3 move atomic_add and CAS_ into pure asm.
this is good in general (less dependence on compiler) and is intended to
work around a bug andrew has been seeing. apparently VC generates
invalid code for the parameters + ASSERT, which causes infinite
recursion on the <location> validation.

This was SVN commit r3142.
2005-11-18 05:16:43 +00:00
janwas 64f98cccc0 remove /QIfist setting from premake (see previous commits).
wsdl: remove APP_NAME, a relict of previously incomplete sdl emulation.

This was SVN commit r3121.
2005-11-09 01:20:33 +00:00
Ykkrosh e6a4dd7f3f Fixed Release-mode crash on middle-mouse up
This was SVN commit r3117.
2005-11-07 21:52:27 +00:00
janwas 9476dc4ad0 ia32: remove _ceil, mark functions as being sysdep implementations; prefix fpucw constants with IA32 to avoid conflicts
sysdep: remove round; document several functions; use ia32.h header
instead of a hack that extern-declared sysdep functions that are
implemented as macro-redirection
wsdl: add SDL_EnableKeyRepeat stub; group related functions in header
together; no longer need OS_WIN wrapper around that

This was SVN commit r3115.
2005-11-07 02:45:25 +00:00
janwas 14c62e721d ia32, sysdep: add float->int implementation and fallback version and self-test
config: add macro that determines when it's used
Terrain, wtime: use new float->int code
detect: no longer change _MCW_RC

This was SVN commit r3114.
2005-11-07 02:04:28 +00:00
prefect 78f9dbb6f1 Fix various warnings (both implicit conversions and real bugs).
This was SVN commit r3110.
2005-11-06 17:58:47 +00:00
janwas 6668ad6e1c CTerrain, Brushes: made CalcFromPosition static and added float x,y overload
minimap, PatchRData, renderer: fix ELOSState comparison vs & and use
SAFE_DELETE
ia32: add rounding control constants (for FISTP)
premake: set /QIfist compiler setting which causes float->int casts to
go through FISTP instruction instead of _ftol2() (much faster, but
requires CPU state to have been set)
LOSManager.cpp: cache m_TilesPerSize; use MIN/MAX; use
CTerrain::CalcFromPosition; clean up GetUnitState a bit. now runs at
203ns, down from 222

This was SVN commit r3099.
2005-11-06 01:33:16 +00:00
janwas 82bdda29ef GameView: revise usage of LOS_VISIBLE - must check bit, not equality
ia32: removing misleading and outdated comment
Player: add "LOS token" - speeds up LosManager by caching a temp result
LOSMAnager: speed up by about 9%, more to come. combined 2 DWORDs into
one u16; further optimization pending. old code remains (via #ifdef
frankenstein)

This was SVN commit r3097.
2005-11-06 00:07:01 +00:00
prefect fb115d19b9 Fix compilation with g++
This was SVN commit r3094.
2005-11-05 23:03:55 +00:00
Ykkrosh faaee7d1b5 Atlas: Terrain painting
This was SVN commit r3092.
2005-11-05 04:59:54 +00:00
janwas 668794e61d add sem_msgwait_np for philip/use with atlas. add API fail reporting for sem_*
networkInternal - remove E* error codes; rely on system <errno.h> header
wposix: add all SUSv3 error codes; value = that of CRT (where
available), otherwise the linux value

This was SVN commit r3087.
2005-11-03 07:26:38 +00:00
janwas aa70714a9f huge dehackification: moribund key input code (featuring static buffer and goto) now uses queue and is much simpler. use message crackers to simplify wndproc and delegate responsibility. grouped keyboard/mouse/app activation code together.
This was SVN commit r3080.
2005-11-02 19:10:44 +00:00
janwas 6af5888866 replace g_active with more clear g_app_has_focus and g_app_minimized
reinstate g_keys - realized that atlas mode cannot call SDL_GetKeyState
main: use g_app_minimized etc. to use up less CPU time when app isn't
active (makes debugging more bearable)

This was SVN commit r3070.
2005-10-31 18:36:36 +00:00
janwas 8c76dc34af g_keys[] has been made redundant by SDL's key array; use SDL_GetKeyState instead to get address of new keys array
fix W4 warnings (unused param and type conversion mostly)

This was SVN commit r3068.
2005-10-31 16:26:51 +00:00
janwas 2452e29f0d remove key- and mouse-state-clear code (previously called after alt+tab out). wsdl now takes care of this: by maintaining its own key array+sending up events for all currently down keys; and by capturing the mouse on each click.
-- this fixes "cursor keys require ctrl" bug reported by jason
wdbg_sym: fix warning
wsdl: as above and also better SDL_ACTIVEEVENT handling
mmgr: 500µs -> 500s -> 500us :)

This was SVN commit r3065.
2005-10-31 01:15:49 +00:00
prefect 695d966788 ia32_memcpy now returns the destination pointer just like the standard
library version does.
Fixed improper non-use of delete[] in the new model code.

This was SVN commit r3060.
2005-10-30 21:01:42 +00:00
janwas 20d038efda profiling indicates memcpy is a bottleneck, so globally replace all of them with memcpy2 (hand-optimized). depending on transfer size, this is 10%..300% faster. also made memcpy2 into a macro instead of thunk function because vc7 was still generating a jump.
This was SVN commit r3057.
2005-10-30 16:19:20 +00:00
janwas 15d9278af6 tex, mem: fix refcnt issue that is the possible cause of bug#70! huge thanks to philip, who localized the problem to tex_wrap/memory not getting freed.
wdbg_sym: make sure symbol info is initialized even if *resolve() fails;
also fix warnings
renderer: make sure texture array is initialized

This was SVN commit r3049.
2005-10-29 22:29:55 +00:00
janwas 8c437850e6 allocators: add include guard and posix.h (needed for PROT_*)
debug: add debug_is_code_ptr and debug_is_stack_ptr
config: add CONFIG_OMIT_FP (needed for ia32_stackwalk).
h_mgr: hyperparanoid overrun detection straightjacket for key2idx - now
safe to use at any time and any unexpected changes cause access
violation.
ia32: add ia32_get_call_target, which disassembles backwards and checks
for a valid CALL instruction + its target
wdbg_sym: add win-specific walk stack function. it's quite simple and
requires EBP frames (hence CONFIG_OMIT_FP). rationale: dbghelp requires
~30 seconds (!) to start up. recent changes (tracking malloc callers via
debug_get_nth_caller) made this happen on every run, so added a
fast-path stack walker to avoid this.

This was SVN commit r3043.
2005-10-29 02:32:36 +00:00
janwas e3b0f20d4e change requested by philip: debug_printf "tags" are now followed by '|' instead of ':' because something like "func: i am blowing up" is rather common.
This was SVN commit r3035.
2005-10-27 16:53:41 +00:00
janwas 8aa0783b97 debug_putws was causing trouble on linux when mixing char and wchar_t writes to file. accordingly, have debug_wprintf do wchar->utf8 conversion (done there instead of in debug_putws because it's needed for the filtering logic as well) and call its char* equivalent and remove debug_putws.
This was SVN commit r2998.
2005-10-24 03:20:54 +00:00
prefect 034985c71f app_hooks.cpp: Remove "inline" from ah_xyz functions (gcc doesn't export
those functions when inline).
debug_putws converts to non-wide characters before printing.

This was SVN commit r2993.
2005-10-24 01:43:37 +00:00
janwas b80be29eab sdl: remove complicated mouse button check/workaround; that's now done in Interact.cpp (which makes the assumptions being tested)
ia32.asm: move get_current_context code here

wdbg_sym: revised get_context code; moved it into walk_stack (fixes bug
on non-ia32)

wsdl: bring in line with real SDL SDL_BUTTON_* (sorry nicolai!)
interact now checks for expected values of SDL_BUTTON.

This was SVN commit r2991.
2005-10-24 00:06:08 +00:00
janwas 359f55700a file_open: cleanup
vfs_tree: move bucket allocator to allocators.cpp
allocators: add matrix self-test
zip: remove redundant timing code and add CHECK_ZFILE everywhere
ogl_tex: implement app hook for overriding gl upload caps
tex: add CHECK_TEX everywhere
TextureManager: only call LoadTextures once (instead of for each file
type)
debug: add hook for translating error messages; add filtering mechanism
to only show interesting debug_printfs (WIP). restructured code:
debug_puts is the sysdep part, while debug_printf does filtering and
then calls that

This was SVN commit r2990.
2005-10-23 23:57:59 +00:00
prefect a5a9f4b657 g++ compilation fixes.
Fix: Unix symbol resolver ignores NULL parameters like Windows resolver
instead of crashing.
Fix: Bugs and crashes in the input system, caused by wrong use of
SDL_BUTTON_* constants.

This was SVN commit r2984.
2005-10-21 18:32:16 +00:00
janwas 39060e7900 cinput, ogl_shader, h_mgr, vfs: stomp on warnings
ia32, sysdep: add rint()
minimap: saw TODO on GetMapSpaceCoords and sped it up by 15% using rintf
and precalculating scaleX
timer: add indication of how often something was billed (helps measure
stuff called an indeterminate number of times)

This was SVN commit r2973.
2005-10-19 20:26:53 +00:00
janwas a953a8ef57 debug_assert now displays function name also. this neatly avoids the need for __func__ in every debug_warn, which also breaks on Linux. all such constructions have been removed.
This was SVN commit r2968.
2005-10-19 06:29:55 +00:00
janwas 5213ca6f56 use "standard" _control87 _EM* flag names instead of our own names; also #undef (required since system header values aren't what we want)
This was SVN commit r2965.
2005-10-19 03:22:13 +00:00
janwas b17fbf003d -move app-specific stuff out of lib/ and into "hooks". see new lib/app_hooks* (note X macro goodness)
-move tex_codec stuff out of tex.cpp and into tex_codec.cpp
-tex_codec: use linked list of codecs instead of array (simplifies code
and removes limit)
-ogl_tex: add override mechanism for s3tc/automipmapgen extension detect
-tired of keeping of debug_warn text in sync with function name; now use
__func__ everywhere (and emulate that with __FUNCTION__ on MSC)
-add ONCE_NOT (opposite of ONCE)
-fix 3!! stupid bugs in ia32_control87, its caller and the header that
were canceling each other out. float exceptions now enabled except for
"inexact result" (too common). (update: nicolai had already fixed 2 of
these)

This was SVN commit r2964.
2005-10-19 03:06:54 +00:00
prefect 9ac4ca16ba Fix ia32_control87 and some floating-point exception stuff.
This was SVN commit r2961.
2005-10-19 01:53:38 +00:00
janwas b350f54162 ogl_tex: centralize OpenGL caps detection; allow user override for broken card/driver combos
- enable floating point exceptions (helps catch bugs)
file.cpp: improved error checking in dir_open/dir_next_ent code
vfs.h: expand docs; add note on patching + SCM
main: use spf (1/fps) to derive TimeSinceLastFrame (makes for smoother
updates)
timer: rename SUM_TIMER to TIMER_ACCRUE. interface change allows
unlimited number of timers (instead of static limit as before).
documented everything

This was SVN commit r2958.
2005-10-17 23:35:16 +00:00
Ykkrosh d7996c104a CInput: swapped direction of mouse-wheel scrolling.
wsdl: initialise handles such that wsdl_shutdown doesn't try to close
them if they remain unchanged.
GameSetup: made work in Atlas.
Renderer: fixed progressive loading of water textures.

This was SVN commit r2941.
2005-10-14 21:59:08 +00:00
janwas 6ff0cf4cab workaround: wdetect needs to call dir_open with absolute paths. we therefore allow this (disabling the full path conversion thing), but it's a hack.
wdbg: stripped SE_DEBUG_NAME test code (Not needed for now); also
improved breakpoint code (had a look over it).

This was SVN commit r2939.
2005-10-14 20:28:55 +00:00