| 
					
				 | 
			
			
				@@ -13,6 +13,7 @@ struct display_capture { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	unsigned display; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	uint32_t width, height; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	bool hide_cursor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	os_event_t disp_finished; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	CGDisplayStreamRef disp; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -99,7 +100,9 @@ static bool init_display_stream(struct display_capture *dc) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	NSDictionary *dict = @{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		(__bridge NSString*)kCGDisplayStreamSourceRect: rect_dict, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(__bridge NSString*)kCGDisplayStreamQueueDepth: @5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(__bridge NSString*)kCGDisplayStreamQueueDepth: @5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(__bridge NSString*)kCGDisplayStreamShowCursor: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			@(!dc->hide_cursor), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	os_event_init(&dc->disp_finished, OS_EVENT_TYPE_MANUAL); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -108,8 +111,9 @@ static bool init_display_stream(struct display_capture *dc) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			dc->width, dc->height, 'BGRA', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			(__bridge CFDictionaryRef)dict, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			dispatch_queue_create(NULL, NULL), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			^(CGDisplayStreamFrameStatus status, uint64_t 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				displayTime, IOSurfaceRef frameSurface, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			^(CGDisplayStreamFrameStatus status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				uint64_t displayTime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				IOSurfaceRef frameSurface, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				CGDisplayStreamUpdateRef updateRef) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				UNUSED_PARAMETER(displayTime); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -247,19 +251,22 @@ static uint32_t display_capture_getheight(void *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static void display_capture_defaults(obs_data_t settings) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	obs_data_set_default_int(settings, "display", 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	obs_data_set_default_bool(settings, "show_cursor", true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static void display_capture_update(void *data, obs_data_t settings) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	struct display_capture *dc = data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	unsigned display = obs_data_getint(settings, "display"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if (dc->display == display) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	bool show_cursor = obs_data_getbool(settings, "show_cursor"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (dc->display == display && dc->hide_cursor != show_cursor) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	gs_entercontext(obs_graphics()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	destroy_display_stream(dc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	dc->display = display; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	dc->hide_cursor = !show_cursor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	init_display_stream(dc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	gs_leavecontext(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -279,6 +286,8 @@ static obs_properties_t display_capture_properties(char const *locale) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		obs_property_list_add_int(list, buf, i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	obs_properties_add_bool(props, "show_cursor", "Show Cursor"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return props; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |