void GetGraphicsCardList(OVR::Array< OVR::String > &gpus) { gpus.Clear(); char info[256] = { 0 }; FILE *file = popen("/usr/bin/lspci", "r"); if (file) { int status = 0; while (status >= 0) { status = fscanf(file, "%*[^\n]\n"); // Read up till the end of the current line, leaving the file pointer at the beginning of the next line (skipping any leading whitespace). OVR_UNUSED(status); // Prevent GCC compiler warning: "ignoring return value of ‘int fscanf(FILE*, const char*, ...)" status = fscanf(file, "%*[^ ] VGA compatible controller: %255[^\n]", info); if (status == 1) { gpus.PushBack(String(info)); } } pclose(file); } if (gpus.GetSizeI() <= 0) { gpus.PushBack(String("No video card details found.")); } }
// Called on each resume, synchronously fetches the data. void ovr_UpdateLocalPreferences() { #if defined( ENABLE_LOCAL_PREFS ) LocalPreferences.Clear(); OVR::MemBufferFile file( localPrefsFile ); // Don't bother checking for duplicate names, later ones // will be ignored and removed on write. const char * txt = (const char *)file.Buffer; LOG( "%s is length %i", localPrefsFile, file.Length ); for ( int ofs = 0 ; ofs < file.Length ; ) { KeyPair kp; int stopPos; kp.Key = ParseToken( txt, ofs, file.Length, stopPos ); ofs = stopPos; kp.Value = ParseToken( txt, ofs, file.Length, stopPos ); ofs = stopPos; if ( kp.Key.GetSize() > 0 ) { LOG( "%s = %s", kp.Key.ToCStr(), kp.Value.ToCStr() ); LocalPreferences.PushBack( kp ); } } #endif }
void ovrMPMCArray< T >::MoveArray( OVR::Array< T > & a ) { ovrScopedMutex mutex( ThisMutex ); for ( int i = 0; i < A.GetSizeI(); ++i ) { a.PushBack( A[i] ); } A.Clear(); }
void VideoBrowser::OnMediaNotFound( OvrGuiSys & guiSys, String & title, String & imageFile, String & message ) { Videos.GetLocale().GetString( "@string/app_name", "@string/app_name", title ); imageFile = "assets/sdcard.png"; Videos.GetLocale().GetString( "@string/media_not_found", "@string/media_not_found", message ); OVR::Array< OVR::String > wholeStrs; wholeStrs.PushBack( "Gear VR" ); guiSys.GetDefaultFont().WordWrapText( message, 1.4f, wholeStrs ); }
void ovrJobManagerImpl::Init( JavaVM & javaVM ) { Jvm = &javaVM; // signal must be created before any job threads are created NewJobSignal = ovrSignal::Create( true ); // create all threads... they will end up waiting on a new job signal for ( int i = 0; i < MAX_THREADS; ++i ) { char threadName[16]; OVR_sprintf( threadName, sizeof( threadName ), "ovrJobThread_%i", i ); ovrJobThread * jt = ovrJobThread::Create( this, i, threadName ); Threads.PushBack( jt ); } Initialized = true; }
// Updates the in-memory data and synchronously writes it to storage. void ovr_SetLocalPreferenceValueForKey( const char * keyName, const char * keyValue ) { LOG( "Set( %s, %s )", keyName, keyValue ); int i = 0; for ( ; i < LocalPreferences.GetSizeI() ; i++ ) { if ( !strcmp( keyName, LocalPreferences[i].Key.ToCStr() ) ) { LocalPreferences[i].Value = keyValue; } } if ( i == LocalPreferences.GetSizeI() ) { KeyPair kp; kp.Key = keyName; kp.Value = keyValue; LocalPreferences.PushBack( kp ); } // don't write out if prefs are disabled because we could overwrite with default values #if defined( ENABLE_LOCAL_PREFS ) // write the file FILE * f = fopen( localPrefsFile, "w" ); if ( !f ) { LOG( "Couldn't open %s for writing", localPrefsFile ); return; } for ( int i = 0 ; i < LocalPreferences.GetSizeI() ; i++ ) { fprintf( f, "%s %s", LocalPreferences[i].Key.ToCStr(), LocalPreferences[i].Value.ToCStr() ); } fclose( f ); #endif }