1*f0687c8aSRaman Tenneti 2*f0687c8aSRaman Tenneti #include <kms++/kms++.h> 3*f0687c8aSRaman Tenneti #include "helpers.h" 4*f0687c8aSRaman Tenneti #include <cstring> 5*f0687c8aSRaman Tenneti 6*f0687c8aSRaman Tenneti #define CPY(field) dst.field = src.field 7*f0687c8aSRaman Tenneti 8*f0687c8aSRaman Tenneti namespace kms 9*f0687c8aSRaman Tenneti { drm_mode_to_video_mode(const drmModeModeInfo & drmmode)10*f0687c8aSRaman TennetiVideomode drm_mode_to_video_mode(const drmModeModeInfo& drmmode) 11*f0687c8aSRaman Tenneti { 12*f0687c8aSRaman Tenneti Videomode mode = {}; 13*f0687c8aSRaman Tenneti 14*f0687c8aSRaman Tenneti auto& src = drmmode; 15*f0687c8aSRaman Tenneti auto& dst = mode; 16*f0687c8aSRaman Tenneti 17*f0687c8aSRaman Tenneti CPY(clock); 18*f0687c8aSRaman Tenneti 19*f0687c8aSRaman Tenneti CPY(hdisplay); 20*f0687c8aSRaman Tenneti CPY(hsync_start); 21*f0687c8aSRaman Tenneti CPY(hsync_end); 22*f0687c8aSRaman Tenneti CPY(htotal); 23*f0687c8aSRaman Tenneti CPY(hskew); 24*f0687c8aSRaman Tenneti 25*f0687c8aSRaman Tenneti CPY(vdisplay); 26*f0687c8aSRaman Tenneti CPY(vsync_start); 27*f0687c8aSRaman Tenneti CPY(vsync_end); 28*f0687c8aSRaman Tenneti CPY(vtotal); 29*f0687c8aSRaman Tenneti CPY(vscan); 30*f0687c8aSRaman Tenneti 31*f0687c8aSRaman Tenneti CPY(vrefresh); 32*f0687c8aSRaman Tenneti 33*f0687c8aSRaman Tenneti CPY(flags); 34*f0687c8aSRaman Tenneti CPY(type); 35*f0687c8aSRaman Tenneti 36*f0687c8aSRaman Tenneti mode.name = drmmode.name; 37*f0687c8aSRaman Tenneti 38*f0687c8aSRaman Tenneti return mode; 39*f0687c8aSRaman Tenneti } 40*f0687c8aSRaman Tenneti video_mode_to_drm_mode(const Videomode & mode)41*f0687c8aSRaman TennetidrmModeModeInfo video_mode_to_drm_mode(const Videomode& mode) 42*f0687c8aSRaman Tenneti { 43*f0687c8aSRaman Tenneti drmModeModeInfo drmmode = {}; 44*f0687c8aSRaman Tenneti 45*f0687c8aSRaman Tenneti auto& src = mode; 46*f0687c8aSRaman Tenneti auto& dst = drmmode; 47*f0687c8aSRaman Tenneti 48*f0687c8aSRaman Tenneti CPY(clock); 49*f0687c8aSRaman Tenneti 50*f0687c8aSRaman Tenneti CPY(hdisplay); 51*f0687c8aSRaman Tenneti CPY(hsync_start); 52*f0687c8aSRaman Tenneti CPY(hsync_end); 53*f0687c8aSRaman Tenneti CPY(htotal); 54*f0687c8aSRaman Tenneti CPY(hskew); 55*f0687c8aSRaman Tenneti 56*f0687c8aSRaman Tenneti CPY(vdisplay); 57*f0687c8aSRaman Tenneti CPY(vsync_start); 58*f0687c8aSRaman Tenneti CPY(vsync_end); 59*f0687c8aSRaman Tenneti CPY(vtotal); 60*f0687c8aSRaman Tenneti CPY(vscan); 61*f0687c8aSRaman Tenneti 62*f0687c8aSRaman Tenneti CPY(vrefresh); 63*f0687c8aSRaman Tenneti 64*f0687c8aSRaman Tenneti CPY(flags); 65*f0687c8aSRaman Tenneti CPY(type); 66*f0687c8aSRaman Tenneti 67*f0687c8aSRaman Tenneti strncpy(drmmode.name, mode.name.c_str(), sizeof(drmmode.name)); 68*f0687c8aSRaman Tenneti drmmode.name[sizeof(drmmode.name) - 1] = 0; 69*f0687c8aSRaman Tenneti 70*f0687c8aSRaman Tenneti return drmmode; 71*f0687c8aSRaman Tenneti } 72*f0687c8aSRaman Tenneti } // namespace kms 73