Commit Graph

700 Commits

Author SHA1 Message Date
Patric Stout
457b4f80b6 Fix 91b8ce07: dedicated servers could no longer create screenshots (#9232)
Although most commands are not useful on a dedicated server,
screenshot commands should be dequeued.

(cherry picked from commit 56050fc96f)
2021-05-14 18:25:34 +01:00
Milek7
deb2ad8997 Codechange: Acquire video buffer before taking game state lock to prevent erratic fast forward behaviour (#9140)
(cherry picked from commit 20762f9117)
2021-05-06 21:12:59 +01:00
Michael Lutz
1b46ef756e Codechange: Generalise the delayed blitter change to a generic video driver command queue.
(cherry picked from commit 91b8ce073f)
2021-05-06 20:52:00 +01:00
Peter Nelson
a469b4f395 Fix: Recalculate padding and minimum sizes when GUI or Font zoom is changed.
(cherry picked from commit 4791ff2862)
2021-05-06 20:11:55 +01:00
Jonathan G Rennison
8eb27e1ac7 Merge branch 'master' into jgrpp
# Conflicts:
#	src/company_cmd.cpp
#	src/lang/japanese.txt
#	src/network/core/config.h
#	src/network/core/packet.cpp
#	src/network/core/tcp.cpp
#	src/network/network_content.cpp
#	src/network/network_server.cpp
#	src/network/network_udp.cpp
#	src/toolbar_gui.cpp
#	src/vehicle_gui_base.h
2021-04-25 22:14:59 +01:00
Jonathan G Rennison
253772e9af Merge branch 'master' into jgrpp
# Conflicts:
#	CMakeLists.txt
#	COMPILING.md
#	src/console.cpp
#	src/console_cmds.cpp
#	src/console_internal.h
#	src/rev.cpp.in
2021-04-25 02:14:58 +01:00
Michael Lutz
f4d5c8d99e Fix: [OpenGL] Main loop expects to start with the video buffer unmapped. (#9100) 2021-04-25 00:43:38 +02:00
Michael Lutz
d1dd997f07 Change: [Win32] Limit the OpenGL video driver to OpenGL 3.2 or newer on Windows. 2021-04-22 21:04:04 +02:00
Michael Lutz
ef80baf75c Codechange: [Win32] Try getting an OpenGL 4.5 context first before aiming at 3.2. 2021-04-22 21:04:04 +02:00
Michael Lutz
e53313391a Fix: [OpenGL] Check maximum supported texture size against screen resolution. 2021-04-21 22:44:59 +02:00
Jonathan G Rennison
205673715c MinGW32: Fix EnumDisplayMonitors callback calling convention compile error 2021-04-14 20:49:26 +01:00
Jonathan G Rennison
253d54ce05 Merge branch 'master' into jgrpp
# Conflicts:
#	src/lang/french.txt
#	src/network/network_udp.cpp
2021-04-12 22:59:30 +01:00
Michael Lutz
433602b072 Fix #9028: [OpenGL] Clear cursor cache on destroying the OpenGL backend. 2021-04-12 22:40:40 +02:00
Rubidium
468b1c6c5d Fix: [win32] buffer_locked state not initialised, causing _screen.dst_ptr to be potentially not set 2021-04-12 21:14:01 +02:00
Rubidium
8562395413 Fix: [Video] fast forward boolean states not initialised, potentially causing unstoppable fast forward 2021-04-12 21:14:01 +02:00
Rubidium
64e8305874 Fix: [SDL] buffer_locked state not initialised, causing _screen.dst_ptr to be potentially not set 2021-04-12 21:14:01 +02:00
Jonathan G Rennison
272e583478 Merge branch 'master' into jgrpp
# Conflicts:
#	src/lang/korean.txt
#	src/settings.cpp
2021-04-12 00:22:13 +01:00
Michael Lutz
5644c00482 Fix: Check for a validly mapped OpenGL screen buffer during driver init. (#9007) 2021-04-11 14:28:29 +02:00
Patric Stout
f0f2073006 Feature: allow a toggle to enable/disable vsync
Vsync should be off by default, as for most players it will be
better to play without vsync. Exception exist, mainly people who
play in fullscreen mode.
2021-04-11 14:26:00 +02:00
Jonathan G Rennison
227041008f Merge branch 'master' into jgrpp
# Conflicts:
#	src/debug.cpp
#	src/lang/russian.txt
#	src/misc_gui.cpp
#	src/os/windows/crashlog_win.cpp
#	src/os/windows/font_win32.cpp
#	src/os/windows/win32.cpp
#	src/rail_cmd.cpp
#	src/window_gui.h
2021-04-11 03:05:08 +01:00
Jonathan G Rennison
edfa04286b Merge branch 'master' into jgrpp
# Conflicts:
#	.github/workflows/release.yml
#	bin/CMakeLists.txt
#	src/dock_gui.cpp
#	src/lang/brazilian_portuguese.txt
#	src/lang/catalan.txt
#	src/lang/czech.txt
#	src/lang/dutch.txt
#	src/lang/english.txt
#	src/lang/english_US.txt
#	src/lang/estonian.txt
#	src/lang/finnish.txt
#	src/lang/french.txt
#	src/lang/german.txt
#	src/lang/hungarian.txt
#	src/lang/indonesian.txt
#	src/lang/italian.txt
#	src/lang/japanese.txt
#	src/lang/korean.txt
#	src/lang/lithuanian.txt
#	src/lang/luxembourgish.txt
#	src/lang/norwegian_bokmal.txt
#	src/lang/polish.txt
#	src/lang/portuguese.txt
#	src/lang/romanian.txt
#	src/lang/russian.txt
#	src/lang/serbian.txt
#	src/lang/simplified_chinese.txt
#	src/lang/slovak.txt
#	src/lang/spanish.txt
#	src/lang/spanish_MX.txt
#	src/lang/swedish.txt
#	src/lang/tamil.txt
#	src/lang/ukrainian.txt
#	src/lang/vietnamese.txt
#	src/newgrf.cpp
#	src/newgrf_gui.cpp
#	src/object_gui.cpp
#	src/pathfinder/yapf/yapf_costrail.hpp
#	src/pathfinder/yapf/yapf_node_rail.hpp
#	src/rail_cmd.cpp
#	src/roadveh_cmd.cpp
#	src/town_cmd.cpp
#	src/vehicle.cpp
#	src/water_cmd.cpp
2021-04-11 02:39:33 +01:00
Jonathan G Rennison
39b7ef31f8 Fix: Data races on cursor state in OpenGL backends 2021-04-10 18:31:42 +02:00
Jonathan G Rennison
fbd0a2e65a Fix: Thread unsafe use of sprite cache in OpenGLBackend::DrawMouseCursor
See also: #8870
See also: #8977
2021-04-10 18:31:42 +02:00
Michael Lutz
96d33ab46a Fix #8930: [Win32] Don't handle printable keys on keydown if an edit box is in focus.
Handle printable input only when the matching WM_CHAR message is incoming.
Without an edit box, do the handling in keydown as usual to support hotkeys.
2021-04-09 12:24:27 +02:00
Niels Martin Hansen
e0561dbded Fix #8713: Change OTTD2FS and FS2OTTD to return string objects instead of static buffers 2021-04-07 09:31:47 +02:00
Jonathan G Rennison
ef81729dde Partially fix data race issues around _cur_palette
See: https://github.com/OpenTTD/OpenTTD/issues/8712
2021-04-06 19:32:15 +01:00
Jonathan G Rennison
63ddf7f587 Crashlog: Update thread/lock handling to match GameLoop changes 2021-04-06 18:43:50 +01:00
Jonathan G Rennison
0e959a0563 OpenGL: Avoid data races around _cursor 2021-04-05 23:34:01 +01:00
Jonathan G Rennison
59daa573b5 Avoid data races around modifier keys and pause/FF state 2021-04-05 23:34:01 +01:00
Jonathan G Rennison
f2bfcc5524 Partially fix data race issues around _cur_palette
See: https://github.com/OpenTTD/OpenTTD/issues/8712
2021-04-05 23:34:01 +01:00
Jonathan G Rennison
e9186308e9 Fix data race in OpenGLBackend::DrawMouseCursor 2021-04-05 23:34:01 +01:00
Jonathan G Rennison
70897c3e5e Only call InteractiveRandom when game state mutex is held 2021-04-05 23:34:01 +01:00
Jonathan G Rennison
e094b7f1d6 Partially fix thread safety issues around _cur_palette
Replaces: 4c59dfb6
See also: https://github.com/OpenTTD/OpenTTD/issues/8712
2021-04-05 23:34:01 +01:00
Jonathan G Rennison
f94eb286f2 Fix missing MinGW thread includes 2021-04-05 20:04:53 +01:00
Jonathan G Rennison
2a13c8623c Revert: 4c59dfb6, move DoPaletteAnimations back into GameLoop
Race fix to follow
2021-04-05 19:55:53 +01:00
Jonathan G Rennison
2e6dbfee05 Merge branch 'master' into jgrpp 2021-04-05 19:31:34 +01:00
Jonathan G Rennison
5e14b54a0c Merge branch 'master' into jgrpp 2021-04-05 17:51:45 +01:00
Jonathan G Rennison
297b340697 Revert "OpenGL: Temporarily reduce OpenGL driver priorities"
This reverts commit f81c71e15b.
2021-04-05 17:48:46 +01:00
Michael Lutz
1cd3a3b070 Fix #8935: [OSX] Crash when clicking 'Save' due to wrongly-threaded OS call. (#8944) 2021-04-05 12:18:45 +02:00
Milek7
7a886cb4d4 Change: Do not disallow persistent buffer mapping on AMD GPUs, as it is actually faster. 2021-03-25 19:37:24 +00:00
Michael Lutz
df958dc907 Fix f0f96e31: [OpenGL] Broken window resizing due to invalid buffer pitch on texture creation. 2021-03-21 22:26:55 +01:00
frosch
0230624359 Fix f0f96e31: [OpenGL] warning: comparison of integer expressions of different signedness. (#8881) 2021-03-21 18:38:51 +01:00
Michael Lutz
f0f96e3103 Fix #8871: [OpenGL] Initialize all buffers after resize and clear back buffer. (#8877) 2021-03-20 19:43:54 +01:00
Patric Stout
970fedd78c Add: make modal windows update more smooth
Basically, modal windows had their own thread-locking for what
drawing was possible. This is a bit nonsense now we have a
game-thread. And it makes much more sense to do things like
NewGRFScan and GenerateWorld in the game-thread, and not in a
thread next to the game-thread.

This commit changes that: it removes the threads for NewGRFScan
and GenerateWorld, and just runs the code in the game-thread.
On regular intervals it allows the draw-thread to do a tick,
which gives a much smoother look and feel.

It does slow down NewGRFScan and GenerateWorld ever so slightly
as it spends more time on drawing. But the slowdown is not
measureable on my machines (with 700+ NewGRFs / 4kx4k map and
a Debug build).

Running without a game-thread means NewGRFScan and GenerateWorld
are now blocking.
2021-03-10 13:41:18 +01:00
sean
0464a50ab8 Add: Display refresh rate game option (#8813) 2021-03-09 10:22:52 +01:00
Michael Lutz
436cdf1fc8 Fix #8825: [OpenGL] Don't clear cursor cache from the game loop thread. 2021-03-08 21:35:35 +01:00
Patric Stout
8946b41d20 Fix: ensure switching blitter happens in the main thread
This because video-drivers might need to make changes to their
context, which for most video-drivers has to be done in the same
thread as the window was created; main thread in our case.
2021-03-08 19:18:55 +01:00
Patric Stout
e56d2c63c3 Add: [Video] move GameLoop into its own thread
This allows drawing to happen while the GameLoop is doing an
iteration too.

Sadly, not much drawing currently can be done while the GameLoop
is running, as for example PollEvent() or UpdateWindows() can
influence the game-state. As such, they first need to acquire a
lock on the game-state before they can be called.

Currently, the main advantage is the time spend in Paint(), which
for non-OpenGL drivers can be a few milliseconds. For OpenGL this
is more like 0.05 milliseconds; in these instances this change
doesn't add any benefits for now.

This is an alternative to the former "draw-thread", which moved
the drawing in a thread for some OSes. It has similar performance
gain as this does, although this implementation allows for more
finer control over what suffers when the GameLoop takes too
long: drawing or the next GameLoop. For now they both suffer
equally.
2021-03-08 19:18:55 +01:00
Michael Lutz
3a4a15cc93 Codechange: don't set the window position when changing blitter
There really is no need to make an extra call to the OS in
these cases.
2021-03-08 19:18:55 +01:00
Patric Stout
b9eac7c6dc Codechange: remove the unused lock around Blitter 2021-03-08 19:18:55 +01:00