/** Documented at declaration */ int dxt_encoder_destroy(struct dxt_encoder* encoder) { #ifdef HAVE_GPUPERFAPI GPA_EndSession(); bool readyResult = FALSE; if ( encoder->sessionID != encoder->currentWaitSessionID ) { GPA_Status sessionStatus; sessionStatus = GPA_IsSessionReady( &readyResult, encoder->currentWaitSessionID ); while ( sessionStatus == GPA_STATUS_ERROR_SESSION_NOT_FOUND ) { // skipping a session which got overwritten encoder->currentWaitSessionID++; sessionStatus = GPA_IsSessionReady( &readyResult, encoder->currentWaitSessionID ); } } if ( readyResult ) { WriteSession( encoder->currentWaitSessionID, "GPUPerfAPI-RTDXT-Results.csv" ); encoder->currentWaitSessionID++; } #endif glDeleteShader(encoder->shader_fragment_compress); glDeleteShader(encoder->shader_vertex_compress); glDeleteProgram(encoder->program_compress); free(encoder); return 0; }
void NetManager::WriteAll(const char *p_buf, size_t len) { std::lock_guard<std::mutex> lock(session_mutex_); for (auto &it : session_list_) { char *p_tmp = new char[len]; memcpy(p_tmp, p_buf, len); WriteSession(it, p_tmp, len); } }