int main() { fprintf(stderr, "Running smug VBO test. Switch rendering mode with F1 and F2\n"); Graphics_init(); generateLayers(); double time = glfwGetTime(); double lastfps = time; int fps = 0; int rendermode = 0; while(!done) { time = glfwGetTime(); if (glfwGetKey(GLFW_KEY_ESC)) { done = 1; } if (glfwGetKey(GLFW_KEY_F1)) { fprintf(stderr, "Rendermode: immediate\n"); rendermode = 0; } if (glfwGetKey(GLFW_KEY_F2)) { fprintf(stderr, "Rendermode: retained\n"); rendermode = 1; } if (rendermode) renderRetained(); else renderImmediate(); fps++; if (time - lastfps >= 1.0) { fprintf(stderr, "FPS: %i, objects: %i\n", (int)((double)fps /(time-lastfps)), LAYERS*BOXES); fps = 0; lastfps += 1.0; } glfwSwapBuffers(); } glfwTerminate(); fprintf(stderr, "Done.\n"); return 0; }
void terrama2::services::view::core::Service::viewJob(const terrama2::core::ExecutionPackage& executionPackage, std::shared_ptr<ViewLogger> logger, std::weak_ptr<DataManager> weakDataManager) { auto dataManager = weakDataManager.lock(); if(!dataManager.get()) { TERRAMA2_LOG_ERROR() << QObject::tr("Unable to access DataManager"); notifyWaitQueue(executionPackage.processId); sendProcessFinishedSignal(executionPackage.processId, executionPackage.executionDate, false); return; } RegisterId logId = executionPackage.registerId; ViewId viewId = executionPackage.processId; std::string viewName = ""; QJsonObject jsonAnswer; try { TERRAMA2_LOG_DEBUG() << QObject::tr("Starting view %1 generation.").arg(viewId); auto mapsServer = MapsServerFactory::getInstance().make(mapsServerUri_, "GEOSERVER"); ///////////////////////////////////////////////////////////////////////// // aquiring metadata auto lock = dataManager->getLock(); auto viewPtr = dataManager->findView(viewId); viewName = viewPtr->viewName; terrama2::core::DataSeriesPtr inputDataSeries = dataManager->findDataSeries(viewPtr->dataSeriesID); terrama2::core::DataProviderPtr inputDataProvider = dataManager->findDataProvider(inputDataSeries->dataProviderId); lock.unlock(); ///////////////////////////////////////////////////////////////////////// auto processingStartTime = terrama2::core::TimeUtils::nowUTC(); QJsonObject mapsServerAnswer = mapsServer->generateLayers(viewPtr, inputDataSeries, inputDataProvider, dataManager, logger, logId); TERRAMA2_LOG_INFO() << tr("View %1(%2) generated successfully.").arg(QString::fromStdString(viewName)).arg(viewId); auto processingEndTime = terrama2::core::TimeUtils::nowUTC(); logger->setStartProcessingTime(processingStartTime, executionPackage.registerId); logger->setEndProcessingTime(processingEndTime, executionPackage.registerId); logger->result(ViewLogger::Status::DONE, terrama2::core::TimeUtils::nowUTC(), logId); jsonAnswer = mapsServerAnswer; jsonAnswer.insert("class", QString("RegisteredViews")); jsonAnswer.insert("process_id",static_cast<int32_t>(viewPtr->id)); jsonAnswer.insert("maps_server", QString::fromStdString(mapsServerUri_.uri())); sendProcessFinishedSignal(viewId, executionPackage.executionDate, true, jsonAnswer); notifyWaitQueue(viewId); return; } catch(const terrama2::core::LogException& e) { auto error = boost::get_error_info<terrama2::ErrorDescription>(e); std::string errMsg; if(error) { errMsg = error->toStdString(); TERRAMA2_LOG_ERROR() << errMsg; } else { TERRAMA2_LOG_ERROR() << QObject::tr("Error logging view build error."); } TERRAMA2_LOG_INFO() << QObject::tr("Build of view %1(%2) finished with error(s).").arg(QString::fromStdString(viewName)).arg(viewId); } catch(const terrama2::Exception& e) { auto error = boost::get_error_info<terrama2::ErrorDescription>(e); std::string errMsg; if(error) { errMsg = error->toStdString(); TERRAMA2_LOG_ERROR() << errMsg; } else { TERRAMA2_LOG_ERROR() << QObject::tr("Error logging view build error."); } TERRAMA2_LOG_INFO() << QObject::tr("Build of view %1(%2) finished with error(s).").arg(QString::fromStdString(viewName)).arg(viewId); if(logId != 0) logger->log(ViewLogger::MessageType::ERROR_MESSAGE, errMsg, logId); } catch(const boost::exception& e) { auto error = boost::get_error_info<terrama2::ErrorDescription>(e); std::string errMsg; if(error) { errMsg = error->toStdString(); TERRAMA2_LOG_ERROR() << errMsg; } else { TERRAMA2_LOG_ERROR() << QObject::tr("Error logging view build error."); } TERRAMA2_LOG_INFO() << QObject::tr("Build of view %1(%2) finished with error(s).").arg(QString::fromStdString(viewName)).arg(viewId); if(logId != 0) logger->log(ViewLogger::MessageType::ERROR_MESSAGE, errMsg, logId); } catch(const std::exception& e) { std::string errMsg = e.what(); TERRAMA2_LOG_ERROR() << errMsg; TERRAMA2_LOG_INFO() << QObject::tr("Build of view %1(%2) finished with error(s).").arg(QString::fromStdString(viewName)).arg(viewId); if(logId != 0) logger->log(ViewLogger::MessageType::ERROR_MESSAGE, errMsg, logId); } catch(...) { std::string errMsg = "Unknown error."; TERRAMA2_LOG_ERROR() << QObject::tr("Unknown error."); TERRAMA2_LOG_INFO() << QObject::tr("Build of view %1(%2) finished with error(s).").arg(QString::fromStdString(viewName)).arg(viewId); if(logId != 0) logger->log(ViewLogger::MessageType::ERROR_MESSAGE, errMsg, logId); } if(logId != 0) logger->result(ViewLogger::Status::ERROR, terrama2::core::TimeUtils::nowUTC(), logId); sendProcessFinishedSignal(viewId, executionPackage.executionDate, false); notifyWaitQueue(viewId); }