summaryrefslogtreecommitdiff
path: root/src/video/win32_v.cpp
AgeCommit message (Collapse)Author
2021-02-19Add: draw the screen at a steady pace, also during fast-forwardPatric Stout
During fast-forward, the game was drawing as fast as it could. This means that the fast-forward was limited also by how fast we could draw, something that people in general don't expect. To give an extreme case, if you are fully zoomed out on a busy map, fast-forward would be mostly limited because of the time it takes to draw the screen. By decoupling the draw-tick and game-tick, we can keep the pace of the draw-tick the same while speeding up the game-tick. To use the extreme case as example again, if you are fully zoomed out now, the screen only redraws 33.33 times per second, fast-forwarding or not. This means fast-forward is much more likely to go at the same speed, no matter what you are looking at.
2021-02-19Codechange: track _realtime_tick more accuratePatric Stout
_realtime_tick was reset every time the diff was calculated. This means if it would trigger, say, every N.9 milliseconds, it would after two iterations already drift a millisecond. This adds up pretty quick.
2021-02-19Codechange: switch all video drivers to std::chrono for keeping timePatric Stout
On all OSes we tested the std::chrono::steady_clock is of a high enough resolution to do millisecond measurements, which is all we need. By accident, this fixes a Win32 driver bug, where we would never hit our targets, as the resolution of the clock was too low to do accurate millisecond measurements with (it was ~16ms resolution instead).
2021-02-14Fix: VkMapping declarations violated C++ ODR rule.milek7
2021-02-14Add: [Win32] Automatic zoom level suggestion for Win32 video driver.Michael Lutz
The zoom level suggestion is based on the DPI scaling set in Windows. We use 150% scaling as the threshold for 2X zoom and 300% scaling as the threshold for 4X zoom.
2021-01-17Codechange: [SDL2/Win32] Be consistent how 0bpp blitters are not allowedPatric Stout
Sometimes it returned an usererror(), sometimes Start() failed. Now it always fails on Start(), so nothing else has to check again what blitter is used. AfterBlitterChange() can never change to a 0bpp, so it is sufficient to guard this with an assert().
2021-01-17Codechange: [Win32] Use _local_palette for most operationsPatric Stout
Other drivers do this too, and this makes the world a bit more the same.
2021-01-17Codechange: [Win32] use CSleep() instead of Sleep() like everywhere elsePatric Stout
Functional it is identical. Just helps future-us when searching for sleeps.
2021-01-17Codechange: [Win32] Use return-early in RegisterWndClass()Patric Stout
2021-01-17Codechange: [Win32] Remove Windows 95 specific mouse tracking work-around.Michael Lutz
2021-01-14Feature: Choose a sensible window size on a fresh OTTD config file. (#8536)Michael Lutz
2021-01-08Codechange: Remove min/max functions in favour of STL variants (#8502)Charles Pigott
2020-12-21Doc: some comments for the win32 video driver (#8409)Patric Stout
Co-authored-by: Niels Martin Hansen <nielsm@indvikleren.dk>
2020-05-21Codechange: Use std::string in the driver and blitter selection code.Michael Lutz
2019-11-10Cleanup: Removed SVN headersS. D. Cloudt
2019-04-18Codechange: use std::vector for _resolutionsglx
2019-04-10Codechange: Use null pointer literal instead of the NULL macroHenry Wilson
2019-04-06Codechange: C++11 STL has a function for getting the number of CPU cores.Michael Lutz
2019-04-06Codechange: Replace custom thread code with C++11 thread objects.Michael Lutz
We assume a conforming C++11 compiler environment that has a valid <thread>-header. Failure to run a real thread is handled gracefully.
2019-04-06Codechange: Replace custom mutex code with C++11 mutex'es.Michael Lutz
A conforming compiler with a valid <mutex>-header is expected. Most parts of the code assume that locking a mutex will never fail unexpectedly, which is generally true on all common platforms that don't just pretend to be C++11. The use of condition variables in driver code is checked.
2019-01-17Codechange: Remove unnecessarily defined functions under MinGWCharles Pigott
2019-01-17Fix: A few minor compile warnings under MinGWCharles Pigott
2018-07-19Feature: Framerate display window (#6822)Niels Martin Hansen
Frame rate and various game loop/graphics timing measurements and graphs. Accessible via the Help menu, and can print some stats in the console via the fps command.
2018-06-27Fix: [Win32] Garbage in OS window title if branch name was too long.Michael Lutz
This was caused by a missing \0-character on reaching the buffer limit.
2018-04-29Remove: WinCE supportPatric Stout
2018-04-10Codechange: [Win32] Use OS function for mouse tracking if present.Michael Lutz
2017-12-09(svn r27935) -Fix [FS#6629]: [Win32] Right mouse scrolling didn't work ↵michi_cc
properly with the Windows 10 Fall Creators Update.
2017-08-13(svn r27893) -Codechange: Use fallthrough attribute. (LordAro)frosch
2017-03-11(svn r27775) -Fix [FS#6510]: Insufficient thread synchronisation when ↵frosch
switching blitters. (JGR)
2016-10-30(svn r27673) -Add: [Win32] Thread names for windows debuggers.michi_cc
2015-02-22(svn r27167) -Fix: [SDL, Windows] Right-mouse-button scrolling ↵frosch
scrolled/jumped way to far, when OpenTTD lagged during mouse event processing.
2014-09-30(svn r26943) -Fix: [Win32] Silence a warning about comparison of signed and ↵planetmaker
unsigned variables when using gcc
2014-04-28(svn r26538) -Codechange: remove double accounting of the driversrubidium
2014-04-27(svn r26522) -Add: A config-file-only setting to disable usage of 8bpp video ↵frosch
modes. -Remove: [win32] fullscreen_bpp setting, which is replaced by above setting. -Change: Disable usage of 8bpp blitters and video modes by default. Many modern OS and hardware cause issues with those.
2014-04-23(svn r26482) -Codechange: add an include that allows us to undefine/redefine ↵rubidium
"unsafe" functions to prevent them from being used, and thus having to care about certain aspects of their return values
2014-02-23(svn r26367) -Fix: [Win32] Use a separate event to indicate that the drawing ↵michi_cc
thread has finished initialising, preventing potential deadlocks.
2014-02-23(svn r26366) -Fix: Protect the windows video driver from concurrent access ↵fonsinchen
(frosch123)
2014-02-23(svn r26365) -Fix [FS#5867]: Don't draw the cursor when its sprite isn't ↵fonsinchen
ready and set _screen.dst_ptr immediately when the buffer changes (frosch123)
2014-02-22(svn r26360) -Revert (r25550) / Fix [FS#5922]: ClientSizeChanged is only ↵frosch
called via WndProcGdi which already has the mutex. The issue which r25550 tried to fix still exists as FS#5867.
2014-01-13(svn r26247) -Fix [FS#5854, FS#5855]: Possible out of bounds reads with the ↵rubidium
sse blitters (MJP)
2014-01-02(svn r26211) -Add: specialised non-animated SS2 blitter (MJP)rubidium
With 32bpp base set about 30% faster than 32bpp-optimized, or about 10% for 8bpp base sets in the Draw function. Respectively about 5 and 1% of total run time
2014-01-02(svn r26209) -Codechange: remove some template magic and simplify some coderubidium
2013-11-16(svn r26009) -Fix: warning about conditional expression with enumeral with ↵rubidium
non-enumeral type
2013-08-05(svn r25684) -Change: [Win32] Draw the composition string ourselves if possible.michi_cc
2013-08-05(svn r25682) -Change: [Win32] Position the IME candidate window at the caret ↵michi_cc
position.
2013-08-05(svn r25681) -Change: [Win32] Position the IME composition window at the ↵michi_cc
caret position.
2013-08-05(svn r25680) -Codechange: [Win32] Cancel the current IME composition when ↵michi_cc
the input focus changes.
2013-08-05(svn r25679) -Codechange: [Win32] Get the result string of an IME input ↵michi_cc
directly without a trip through the window messaging system.
2013-08-05(svn r25675) -Fix: [Win32] Handle DBCS characters correctly in the ↵michi_cc
non-Unicode build.
2013-08-05(svn r25673) -Fix: [Win32] Use the right code page for converting ANSI ↵michi_cc
strings into UTF-8 for non-Unicode builds. And don't crap out on DBCS code pages either.