mirror of
				https://github.com/glfw/glfw.git
				synced 2025-11-04 06:15:07 +00:00 
			
		
		
		
	Wayland: Add support for wl_output::name
We now use wl_output::name as the GLFW monitor name, on compositors that provide this event.
This commit is contained in:
		
							parent
							
								
									33d37782c6
								
							
						
					
					
						commit
						209f6cf093
					
				@ -298,6 +298,7 @@ information on what to include when reporting a bug.
 | 
			
		||||
 - [Wayland] Added dynamic loading of all Wayland libraries
 | 
			
		||||
 - [Wayland] Added support for key names via xkbcommon
 | 
			
		||||
 - [Wayland] Added support for file path drop events (#2040)
 | 
			
		||||
 - [Wayland] Added support for more human-readable monitor names where available
 | 
			
		||||
 - [Wayland] Removed support for `wl_shell` (#1443)
 | 
			
		||||
 - [Wayland] Bugfix: The `GLFW_HAND_CURSOR` shape used the wrong image (#1432)
 | 
			
		||||
 - [Wayland] Bugfix: `CLOCK_MONOTONIC` was not correctly enabled
 | 
			
		||||
 | 
			
		||||
@ -55,7 +55,8 @@ static void outputHandleGeometry(void* userData,
 | 
			
		||||
    monitor->widthMM = physicalWidth;
 | 
			
		||||
    monitor->heightMM = physicalHeight;
 | 
			
		||||
 | 
			
		||||
    snprintf(monitor->name, sizeof(monitor->name), "%s %s", make, model);
 | 
			
		||||
    if (strlen(monitor->name) == 0)
 | 
			
		||||
        snprintf(monitor->name, sizeof(monitor->name), "%s %s", make, model);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void outputHandleMode(void* userData,
 | 
			
		||||
@ -108,12 +109,33 @@ static void outputHandleScale(void* userData,
 | 
			
		||||
    monitor->wl.scale = factor;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef WL_OUTPUT_NAME_SINCE_VERSION
 | 
			
		||||
 | 
			
		||||
void outputHandleName(void* userData, struct wl_output* wl_output, const char* name)
 | 
			
		||||
{
 | 
			
		||||
    struct _GLFWmonitor* monitor = userData;
 | 
			
		||||
 | 
			
		||||
    strncpy(monitor->name, name, sizeof(monitor->name) - 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void outputHandleDescription(void* userData,
 | 
			
		||||
                             struct wl_output* wl_output,
 | 
			
		||||
                             const char* description)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // WL_OUTPUT_NAME_SINCE_VERSION
 | 
			
		||||
 | 
			
		||||
static const struct wl_output_listener outputListener =
 | 
			
		||||
{
 | 
			
		||||
    outputHandleGeometry,
 | 
			
		||||
    outputHandleMode,
 | 
			
		||||
    outputHandleDone,
 | 
			
		||||
    outputHandleScale,
 | 
			
		||||
#ifdef WL_OUTPUT_NAME_SINCE_VERSION
 | 
			
		||||
    outputHandleName,
 | 
			
		||||
    outputHandleDescription,
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -130,10 +152,16 @@ void _glfwAddOutputWayland(uint32_t name, uint32_t version)
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#ifdef WL_OUTPUT_NAME_SINCE_VERSION
 | 
			
		||||
    version = _glfw_min(version, WL_OUTPUT_NAME_SINCE_VERSION);
 | 
			
		||||
#else
 | 
			
		||||
    version = 2;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    struct wl_output* output = wl_registry_bind(_glfw.wl.registry,
 | 
			
		||||
                                                name,
 | 
			
		||||
                                                &wl_output_interface,
 | 
			
		||||
                                                2);
 | 
			
		||||
                                                version);
 | 
			
		||||
    if (!output)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user