static void printConnectors(int fd, uint32_t* ids, uint32_t count) { drmModeConnector *conn; int i; for (i = 0; i < count; i++) { conn = drmModeGetConnector(fd, ids[i]); if (!conn) { fprintf(stdout, " Connector %u: cannot retrieve (%d): %m\n\n", ids[i], errno); continue; } fprintf(stdout, " Connector %u:\n", conn->connector_id); fprintf(stdout, " Type: %s\n", getConnectorType(conn->connector_type)); fprintf(stdout, " Dimensions: %umm x %umm\n", conn->mmWidth, conn->mmHeight); fprintf(stdout, " SubPixel: %s\n", getConnectorSubPixel(conn->subpixel)); fprintf(stdout, " Connection: %s\n", getConnectorConnection(conn->connection)); fprintf(stdout, " Encoders: %d: %s\n", conn->count_encoders, getList32(conn->encoders, conn->count_encoders)); fprintf(stdout, " Properties: %d:\n", conn->count_props); printProperties(fd, conn->props, conn->prop_values, conn->count_props); fprintf(stdout, " Modes: %d:\n", conn->count_modes); printModes(conn->modes, conn->count_modes); fprintf(stdout, "\n"); drmModeFreeConnector(conn); } }
int as::Window::init() { // First figure out what kind of mode we're in. switch ( m_videoMode ) { // Use provided width and height. case -1: { m_mode = sf::VideoMode( m_width, m_height ); break; } // Use desktop width and height. case 0: { m_mode = sf::VideoMode::getDesktopMode(); break; } // Use provided video mode. default: { int modeIndex = m_videoMode--; std::vector<sf::VideoMode> modes = sf::VideoMode::getFullscreenModes(); if ( modeIndex < (int)modes.size() && modeIndex >= 0 ) { m_mode = modes.at( modeIndex ); } else { as::printf( "ERR Video mode index % is out of range, using last available video mode...\n", m_videoMode ); m_mode = modes.back(); } break; } } printModes(); if ( m_fullscreen && !m_mode.isValid() ) { as::printf( "WRN %x% is an invalid video mode!\n", m_width, m_height ); as::printf( "INF Using desktop resolution instead.\n" ); m_mode = sf::VideoMode::getDesktopMode(); } if ( m_noborder ) { m_window->create( m_mode, m_name, sf::Style::None ); } else if ( m_fullscreen ) { m_window->create( m_mode, m_name, sf::Style::Fullscreen ); } else { m_window->create( m_mode, m_name ); } m_window->setFramerateLimit( m_maxfps ); m_window->setVerticalSyncEnabled( m_vsync ); return 0; }