| |
| #include <kms++/kms++.h> |
| #include "helpers.h" |
| #include <cstring> |
| |
| #define CPY(field) dst.field = src.field |
| |
| namespace kms |
| { |
| Videomode drm_mode_to_video_mode(const drmModeModeInfo& drmmode) |
| { |
| Videomode mode = { }; |
| |
| auto& src = drmmode; |
| auto& dst = mode; |
| |
| CPY(clock); |
| |
| CPY(hdisplay); |
| CPY(hsync_start); |
| CPY(hsync_end); |
| CPY(htotal); |
| CPY(hskew); |
| |
| CPY(vdisplay); |
| CPY(vsync_start); |
| CPY(vsync_end); |
| CPY(vtotal); |
| CPY(vscan); |
| |
| CPY(vrefresh); |
| |
| CPY(flags); |
| CPY(type); |
| |
| mode.name = drmmode.name; |
| |
| return mode; |
| } |
| |
| drmModeModeInfo video_mode_to_drm_mode(const Videomode& mode) |
| { |
| drmModeModeInfo drmmode = { }; |
| |
| auto& src = mode; |
| auto& dst = drmmode; |
| |
| CPY(clock); |
| |
| CPY(hdisplay); |
| CPY(hsync_start); |
| CPY(hsync_end); |
| CPY(htotal); |
| CPY(hskew); |
| |
| CPY(vdisplay); |
| CPY(vsync_start); |
| CPY(vsync_end); |
| CPY(vtotal); |
| CPY(vscan); |
| |
| CPY(vrefresh); |
| |
| CPY(flags); |
| CPY(type); |
| |
| strncpy(drmmode.name, mode.name.c_str(), sizeof(drmmode.name)); |
| drmmode.name[sizeof(drmmode.name) - 1] = 0; |
| |
| return drmmode; |
| } |
| } |