|  | #include <sched.h> | 
|  | #include <unistd.h> | 
|  |  | 
|  | #include <log/log.h> | 
|  |  | 
|  | #include <dvr/performance_client_api.h> | 
|  | #include <pdx/service_dispatcher.h> | 
|  |  | 
|  | #include "buffer_hub.h" | 
|  |  | 
|  | int main(int, char**) { | 
|  | int ret = -1; | 
|  | std::shared_ptr<android::pdx::Service> service; | 
|  | std::unique_ptr<android::pdx::ServiceDispatcher> dispatcher; | 
|  |  | 
|  | // We need to be able to create endpoints with full perms. | 
|  | umask(0000); | 
|  |  | 
|  | dispatcher = android::pdx::ServiceDispatcher::Create(); | 
|  | CHECK_ERROR(!dispatcher, error, "Failed to create service dispatcher\n"); | 
|  |  | 
|  | service = android::dvr::BufferHubService::Create(); | 
|  | CHECK_ERROR(!service, error, "Failed to create buffer hub service\n"); | 
|  | dispatcher->AddService(service); | 
|  |  | 
|  | ret = dvrSetSchedulerClass(0, "graphics"); | 
|  | CHECK_ERROR(ret < 0, error, "Failed to set thread priority"); | 
|  |  | 
|  | ALOGI("Entering message loop."); | 
|  |  | 
|  | ret = dispatcher->EnterDispatchLoop(); | 
|  | CHECK_ERROR(ret < 0, error, "Dispatch loop exited because: %s\n", | 
|  | strerror(-ret)); | 
|  |  | 
|  | error: | 
|  | return -ret; | 
|  | } |