Quantum 
							
						 
					 
					
						
						
							
						
						065d90c3f7 
					 
					
						
						
							
							[client] imgui: add mode to forward mouse input to imgui  
						
						
						
						
					 
					
						2021-07-29 17:02:59 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						134829cbf2 
					 
					
						
						
							
							[client] imgui: make graph y-axis configurable  
						
						... 
						
						
						
						The default of [0, 50] makes sense for FPS/UPS graphs, but does not for
things like the import graph. The latter should not take more than 5 ms
for sure.
This commit allows the min/max y-axis value to be specified when registering
the graph. 
						
						
					 
					
						2021-07-29 15:54:15 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						6ed1f4662d 
					 
					
						
						
							
							[client] imgui: report failed font atlas building  
						
						... 
						
						
						
						Also removed the inefficient code to build the default atlas. 
						
						
					 
					
						2021-07-26 17:08:02 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						2ef80a5d34 
					 
					
						
						
							
							[client] overlay: cosmetic changes to the overlay display  
						
						
						
						
					 
					
						2021-07-25 16:49:25 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						60a58d4d8d 
					 
					
						
						
							
							[client] all: make it possible to signal full window invalidation  
						
						... 
						
						
						
						Now that we are drawing with damage rects, when the window is hidden and
then exposed the window may not get fully redrawn. This provides
`app_invalidateWindow` for the display server backend to call when the
screen needs a full redraw. 
						
						
					 
					
						2021-07-25 15:29:29 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						8c2a77e84e 
					 
					
						
						
							
							[client] don't skip the first frame if we do not yet have a frame  
						
						... 
						
						
						
						A frame serial of `0` is valid and will happen if either the host app
has just started, or the serial has overflowed. 
						
						
					 
					
						2021-07-25 15:10:40 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						9dffde74b2 
					 
					
						
						
							
							[client] main: skip duplicate frames  
						
						... 
						
						
						
						When a new client connects to our session the host will repeat the last
valid frame for the new client. This change will detect this and skip
the duplicated frame. 
						
						
					 
					
						2021-07-25 13:46:48 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						be44249c05 
					 
					
						
						
							
							[client] imgui: converted alerts to use imgui  
						
						
						
						
					 
					
						2021-07-23 20:18:12 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						efb5019176 
					 
					
						
						
							
							[client] overlay/help: switch to using ImGui's table facility  
						
						
						
						
					 
					
						2021-07-23 18:04:05 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						036f16b9ef 
					 
					
						
						
							
							[client] imgui: convert help overlay to use imgui  
						
						
						
						
					 
					
						2021-07-23 18:04:05 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						436986d182 
					 
					
						
						
							
							[client] imgui: make UI font and size configurable  
						
						
						
						
					 
					
						2021-07-23 16:07:42 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						5d053128ac 
					 
					
						
						
							
							[client] imgui: use improved high DPI rendering  
						
						... 
						
						
						
						This actually makes imgui render at a higher resolution, avoiding scaling
and resulting blurriness. 
						
						
					 
					
						2021-07-23 16:07:42 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						b5c5ecc074 
					 
					
						
						
							
							[client] imgui: support high DPI by scaling framebuffer  
						
						... 
						
						
						
						This allows overlays to render at correct positions on high DPI displays. 
						
						
					 
					
						2021-07-23 16:07:42 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						56308fcbd1 
					 
					
						
						
							
							[client] overlay: use utility function to get ImGui rectangle  
						
						
						
						
					 
					
						2021-07-23 15:54:18 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						628bdab21b 
					 
					
						
						
							
							[client] overlay: remove space checking  
						
						... 
						
						
						
						Every overlay is now guaranteed to be able to write MAX_OVERLAY_RECTS rects,
and running out of space is now an error. 
						
						
					 
					
						2021-07-23 15:54:18 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						df0397b10b 
					 
					
						
						
							
							[client] imgui: track last rectangles for overlays  
						
						... 
						
						
						
						This is necessary in case overlays change size. When this happens, we must
damage the larger of the overlays' rectangles this frame and last frame.
This erases the overlay from where it is no longer appears.
In order to do this, we must keep track of the rectangles for every overlay
with no exception. We cannot short-circuit the generation of rectangles if
we run out of buffer space, and we must allocate space for MAX_OVERLAY_RECTS
rectangles for every frame. Otherwise, we will not know where to erase the
overlay if it disappears. 
						
						
					 
					
						2021-07-23 15:54:18 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						947eac52f6 
					 
					
						
						
							
							[client] renderers: treat -1 as full damage and 0 as no overlay  
						
						... 
						
						
						
						This makes everything consistent. 
						
						
					 
					
						2021-07-22 18:57:34 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						eb5c588af9 
					 
					
						
						
							
							[client] overlay: call igEnd before return  
						
						
						
						
					 
					
						2021-07-22 18:38:32 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						3b6ad957e3 
					 
					
						
						
							
							[client] overlay: increment totalRects  
						
						
						
						
					 
					
						2021-07-22 18:38:00 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						4acbf2e9a0 
					 
					
						
						
							
							[client] overlay: rework the interface to avoid possible race conditions  
						
						
						
						
					 
					
						2021-07-22 18:33:50 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						50f7a1a99c 
					 
					
						
						
							
							[client] overlay: properly free the graphs before ll free  
						
						
						
						
					 
					
						2021-07-22 18:32:28 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						fdbdf6f167 
					 
					
						
						
							
							[client] app: implement new overlay rendering framework  
						
						... 
						
						
						
						This change set implements a framework for overlays to be registered
that make use of ImGui. See `overlay/fps` for a simple implementation
example. 
						
						
					 
					
						2021-07-22 17:27:30 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						6389a06903 
					 
					
						
						
							
							[client] main: let the renderer know if it's rendering a whole new frame  
						
						... 
						
						
						
						While the renderer can internally track this it would be better to
simply provide this information to the renderer directly so it can make
better decisions on how best to update the screen. 
						
						
					 
					
						2021-07-21 17:26:48 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						8cf444ef31 
					 
					
						
						
							
							[client] main: sync to the ups if the ups exceeds minFrameTime  
						
						
						
						
					 
					
						2021-07-21 16:56:49 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						1c8af28f26 
					 
					
						
						
							
							Revert "[client] main: increase the ups/fps update rate to once per 100ms"  
						
						... 
						
						
						
						This reverts commit b877bab48f 
						
						
					 
					
						2021-07-21 16:50:49 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						9b472d62a9 
					 
					
						
						
							
							[client] main: remove/fix faulty upsTime code  
						
						... 
						
						
						
						The implementation was flawed, instead we just update the presentation
time if there was not an early wakeup. 
						
						
					 
					
						2021-07-21 16:47:37 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						3c0ebd54ec 
					 
					
						
						
							
							[client] main: improve frame rate sync lock with the guest  
						
						... 
						
						
						
						If the guest is not sending frames at a constant rate, the minimum FPS
timeout may expire drawing an additional frame. This change calculates
the average ups frame time over the past 100ms and adds this to the
timeout value allowing this value to be dynamic. 
						
						
					 
					
						2021-07-20 15:41:56 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						b877bab48f 
					 
					
						
						
							
							[client] main: increase the ups/fps update rate to once per 100ms  
						
						... 
						
						
						
						This is so that we can use the ups information in the following commit. 
						
						
					 
					
						2021-07-20 15:40:57 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						e6e07e8f3f 
					 
					
						
						
							
							[client] main: use the monotonic clock to calculate the ups/fps  
						
						... 
						
						
						
						The accumulated time is not the best way to do this as the timer
function callback may not be exactly every 1000ms, by using the
monotonic clock we will get more accurate results. 
						
						
					 
					
						2021-07-20 15:40:51 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						0cbc529640 
					 
					
						
						
							
							[client] ds: refactor common EGL swap with damage logic  
						
						... 
						
						
						
						This commit creates a new utility library, eglutil.h, which contains code
to detect and use EGL_KHR_swap_buffers_with_damage or its EXT equivalent.
This logic used to be duplicated between the X11 and Wayland display servers,
which is not ideal. 
						
						
					 
					
						2021-07-19 19:35:52 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						33bf668697 
					 
					
						
						
							
							[client] app: correct FPS to use an actual per second value  
						
						
						
						
					 
					
						2021-07-19 10:58:40 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						e4e1451eaa 
					 
					
						
						
							
							[client] app: give some transparency to the new FPS window  
						
						
						
						
					 
					
						2021-07-18 21:22:16 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						ab31040d5f 
					 
					
						
						
							
							[client] all: use imgui for FPS/UPS display  
						
						
						
						
					 
					
						2021-07-18 20:43:17 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						c6a6230a56 
					 
					
						
						
							
							[client] egl: revert "only copy damaged areas when using dmabuf"  
						
						... 
						
						
						
						This reverts commit a14de25661 
						
						
					 
					
						2021-07-18 18:48:35 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						a14de25661 
					 
					
						
						
							
							[client] egl: only copy damaged areas when using dmabuf  
						
						... 
						
						
						
						This speeds up the copy significantly when the frame only has small
amount of damage. 
						
						
					 
					
						2021-07-18 17:41:29 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						6da9428d85 
					 
					
						
						
							
							[client] imgui: use struct for graph metrics instead of array  
						
						... 
						
						
						
						This allows the members to be named, making the code much easier to read. 
						
						
					 
					
						2021-07-18 16:15:10 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						15bc6a1509 
					 
					
						
						
							
							[client] imgui: support registering new graphs  
						
						... 
						
						
						
						Currently, our struct ll doesn't support removing elements from the middle,
so we will not be removing anything for now. 
						
						
					 
					
						2021-07-18 16:15:10 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						f49f2af6cd 
					 
					
						
						
							
							[client] egl: implement error reporting callback  
						
						... 
						
						
						
						This reports useful information from OpenGL on supported platforms. 
						
						
					 
					
						2021-07-18 13:54:16 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						e0c9a71cd8 
					 
					
						
						
							
							[client] spice: remove dpi which is no longer used  
						
						... 
						
						
						
						DPI was originally added to workaround cursor movement scaling, but since
due to changes with mouse handling, it's no longer required. 
						
						
					 
					
						2021-07-18 10:50:57 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						d44d87ee7f 
					 
					
						
						
							
							[client] spice: update to use the new epoll version of PureSpice  
						
						
						
						
					 
					
						2021-07-18 10:48:56 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						12cb3e512f 
					 
					
						
						
							
							[client] util: add function for merging overlapping rectangles  
						
						... 
						
						
						
						This will be used to merge overlapping rectangles in order to avoid copying
the same rectangles multiple times. 
						
						
					 
					
						2021-07-18 10:41:50 +10:00 
						 
				 
			
				
					
						
							
							
								Quantum 
							
						 
					 
					
						
						
							
						
						442ab318fd 
					 
					
						
						
							
							[client] egl: use desktop frame damage information  
						
						
						
						
					 
					
						2021-07-18 10:41:50 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						df2f623599 
					 
					
						
						
							
							[client] app: add keybind to toggle frame timing information display  
						
						
						
						
					 
					
						2021-07-18 09:59:37 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						73357988e6 
					 
					
						
						
							
							[client] main: don't trigger redraws if the video feed is disabled  
						
						... 
						
						
						
						If the video feed is disabled we are not drawing the cursor, so don't
cause needless redraws 
						
						
					 
					
						2021-07-17 21:09:51 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						092ce61908 
					 
					
						
						
							
							[client] main: copy & release KVMFR messages sooner  
						
						... 
						
						
						
						The renderer may take time to process the cursor update due to various
internal factors, as such it's best we copy the data and mark the
message as done ASAP. This prevents the host from filling up the queue
as easily when a high dpi mouse is in use. 
						
						
					 
					
						2021-07-17 21:09:51 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						b9d7674b20 
					 
					
						
						
							
							[client] imgui: calculate min/max/avg/fps and add them to the plots  
						
						
						
						
					 
					
						2021-07-17 21:09:51 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						8e3df5a38f 
					 
					
						
						
							
							[client] main: dont push an invalid value into the timings buffers  
						
						
						
						
					 
					
						2021-07-17 21:09:51 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						2e76c874cc 
					 
					
						
						
							
							[client] app: initial imgui frame timings  
						
						
						
						
					 
					
						2021-07-17 21:09:51 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						c3bc5fb0ff 
					 
					
						
						
							
							[client] app: collect render and frame timing information  
						
						
						
						
					 
					
						2021-07-17 21:09:51 +10:00 
						 
				 
			
				
					
						
							
							
								Geoffrey McRae 
							
						 
					 
					
						
						
							
						
						bcffd70270 
					 
					
						
						
							
							[client] app: init/destroy imgui context on run/shutdown  
						
						
						
						
					 
					
						2021-07-17 21:09:51 +10:00