本文整理汇总了C++中cleanup函数的典型用法代码示例。如果您正苦于以下问题:C++ cleanup函数的具体用法?C++ cleanup怎么用?C++ cleanup使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cleanup函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: oph_signal_handler
void oph_signal_handler(int sig)
{
pmesg(LOG_DEBUG, __FILE__, __LINE__, "CALLED oph_signal_handler; catched signal nr %d (%s)\n", sig, sys_siglist[sig] ? sys_siglist[sig] : "");
cleanup();
exit(1);
}
开发者ID:OphidiaBigData,项目名称:ophidia-server,代码行数:6,代码来源:oph_server.c
示例2: finish
void finish() {
cleanup();
sqlite3_close(db);
free(sql_cmd);
free(all_classes.classes);
}
开发者ID:leo0602,项目名称:hw-tracker,代码行数:6,代码来源:hw.c
示例3: WinMain
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
// local
WNDCLASSEX winClass;
MSG uMsg;
char* winClassName = "rtvsD3dWinLite";
// initialise message
memset(&uMsg,0,sizeof(uMsg));
// init
winClass.lpszClassName = winClassName;
winClass.cbSize = sizeof(WNDCLASSEX);
winClass.style = CS_HREDRAW | CS_VREDRAW;
winClass.lpfnWndProc = WindowProc;
winClass.hInstance = hInstance;
winClass.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_ICON1);
winClass.hIconSm = LoadIcon(hInstance, (LPCTSTR)IDI_ICON2);
winClass.hCursor = LoadCursor(NULL, IDC_ARROW);
winClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
winClass.lpszMenuName = NULL;
winClass.cbClsExtra = 0;
winClass.cbWndExtra = 0;
// IF register class fails THEN end
if( !RegisterClassEx(&winClass) )
return E_FAIL;
// create window
g_hWnd = CreateWindowEx( NULL, winClassName,
"JGamlin Ocean Waves",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0, 0, 1200, 800, NULL, NULL, hInstance, NULL );
// IF create window fails THEN end
if( g_hWnd == NULL )
return E_FAIL;
// housekeeping
ShowWindow( g_hWnd, nCmdShow );
UpdateWindow( g_hWnd );
// create application
g_app = new rtvsD3dApp(0);
// non-device one time application setup
g_app->setup();
// non-device one time setup
setup();
// device dependent setup
setupDX();
// WHILE NOT quit, handle messages and display
while( uMsg.message != WM_QUIT )
{
if( PeekMessage( &uMsg, NULL, 0, 0, PM_REMOVE ) )
{
TranslateMessage( &uMsg );
DispatchMessage( &uMsg );
}
else
display();
}
// device dependent cleanup
cleanupDX();
// non-device dependant one time cleanup
cleanup();
// non-device one time application cleanup
g_app->cleanup();
// unregister windows class
UnregisterClass(
winClassName,
winClass.hInstance
);
return uMsg.wParam;
}
开发者ID:gamlin777,项目名称:JGamlin-OceanWaves,代码行数:88,代码来源:rtvsD3dWinLite.cpp
示例4: main
int main(int ac, char **av)
{
int lc;
char *msg;
pid_t pid1, pid2;
int exno, status, nsig, i;
if ((msg = parse_opts(ac, av, NULL, NULL)) != NULL) {
tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
}
#ifdef UCLINUX
maybe_run_child(&do_child, "");
#endif
setup(); /* global setup */
/* The following loop checks looping state if -i option given */
for (lc = 0; TEST_LOOPING(lc); lc++) {
/* reset Tst_count in case we are looping */
Tst_count = 0;
status = 1;
exno = 1;
/* Fork a process and set the process group so that */
/* it is different from this one. Fork 5 more children. */
pid1 = FORK_OR_VFORK();
if (pid1 < 0) {
tst_brkm(TBROK, cleanup, "Fork of first child failed");
} else if (pid1 == 0) {
setpgrp();
for (i = 0; i < 5; i++) {
pid2 = FORK_OR_VFORK();
if (pid2 < 0) {
tst_brkm(TBROK, cleanup, "Fork failed");
} else if (pid2 == 0) {
#ifdef UCLINUX
if (self_exec(av[0], "") < 0) {
tst_brkm(TBROK, cleanup,
"self_exec of "
"child failed");
}
#else
do_child();
#endif
}
}
/* Kill all processes in this process group */
TEST(kill(0, TEST_SIG));
pause();
exit(exno);
} else {
waitpid(pid1, &status, 0);
if (TEST_RETURN != 0) {
tst_brkm(TFAIL, cleanup, "%s failed - errno = "
"%d : %s", TCID, TEST_ERRNO,
strerror(TEST_ERRNO));
}
}
if (STD_FUNCTIONAL_TEST) {
/*
* Check to see if the process was terminated with the
* expected signal.
*/
nsig = WTERMSIG(status);
if (nsig == TEST_SIG) {
tst_resm(TPASS, "received expected signal %d",
nsig);
} else {
tst_resm(TFAIL,
"expected signal %d received %d",
TEST_SIG, nsig);
}
} else {
tst_resm(TPASS, "call succeeded");
}
}
cleanup();
tst_exit();
}
开发者ID:shubmit,项目名称:shub-ltp,代码行数:83,代码来源:kill08.c
示例5: cleanup
TimeZoneNamesImpl::~TimeZoneNamesImpl() {
cleanup();
}
开发者ID:00zhengfu00,项目名称:third_party,代码行数:3,代码来源:tznames_impl.cpp
示例6: cleanup
// -----------------------------------------------------------------------------
WiimoteManager::~WiimoteManager()
{
cleanup();
} // ~WiimoteManager
开发者ID:Berulacks,项目名称:stk-code,代码行数:5,代码来源:wiimote_manager.cpp
示例7: main
//.........这里部分代码省略.........
} else {
tst_resm(TINFO, "block 1 PASSED");
}
tst_resm(TINFO, "Exit block 1");
/* //block2: */
#ifndef UCLINUX
/* Skip since uClinux does not implement memory protection */
tst_resm(TINFO, "Enter block 2");
tst_resm(TINFO, "Test for errno EFAULT");
fail = 0;
/* case 1: F_SETLK */
if (fcntl(1, F_SETLK, (void *)-1) != -1) {
tst_resm(TFAIL, "F_SETLK: fcntl(2) failed to FAIL");
fail = 1;
} else if (errno != EFAULT) {
tst_resm(TFAIL, "F_SETLK: Expected EFAULT got %d",
errno);
fail = 1;
}
/* case 2: F_SETLKW */
if (fcntl(1, F_SETLKW, (void *)-1) != -1) {
tst_resm(TFAIL, "F_SETLKW: fcntl(2) failed to FAIL");
fail = 1;
} else if (errno != EFAULT) {
tst_resm(TFAIL, "F_SETLKW: Expected EFAULT got %d",
errno);
fail = 1;
}
/* case 3: F_GETLK */
if (fcntl(1, F_GETLK, (void *)-1) != -1) {
tst_resm(TFAIL, "F_GETLK: fcntl(2) failed to FAIL");
fail = 1;
} else if (errno != EFAULT) {
tst_resm(TFAIL, "F_GETLK: Expected EFAULT got %d",
errno);
fail = 1;
}
if (fail) {
tst_resm(TINFO, "blcok 2 FAILED");
} else {
tst_resm(TINFO, "block 2 PASSED");
}
tst_resm(TINFO, "Exit block 2");
#else
tst_resm(TINFO, "Skip block 2 on uClinux");
#endif
/* //block3: */
tst_resm(TINFO, "Enter block 3");
tst_resm(TINFO, "Test for errno EINVAL");
fail = 0;
flock.l_whence = -1;
flock.l_type = F_WRLCK;
flock.l_start = 0L;
flock.l_len = 0L;
if (fcntl(1, F_SETLK, &flock) != -1) {
tst_resm(TFAIL, "fcntl(2) failed to FAIL");
fail = 1;
} else if (errno != EINVAL) {
tst_resm(TFAIL, "Expected EINVAL, got %d", errno);
fail = 1;
}
if (fail) {
tst_resm(TINFO, "block 3 FAILED");
} else {
tst_resm(TINFO, "block 3 PASSED");
}
tst_resm(TINFO, "Exit block 3");
/* //block4: */
tst_resm(TINFO, "Enter block 4");
tst_resm(TINFO, "Test for errno EBADF");
fail = 0;
if (fcntl(-1, F_GETLK, &flock) != -1) {
tst_resm(TFAIL, "fcntl(2) failed to FAIL");
fail = 1;
} else if (errno != EBADF) {
tst_resm(TFAIL, "Expected EBADF, got %d", errno);
fail = 1;
}
if (fail) {
tst_resm(TINFO, "block 4 FAILED");
} else {
tst_resm(TINFO, "block 4 PASSED");
}
tst_resm(TINFO, "Exit block 4");
}
cleanup();
tst_exit();
}
开发者ID:ArnoldWu,项目名称:ltp,代码行数:101,代码来源:fcntl13.c
示例8: main
int main(int argc, char *argv[])
{
pid_t cpid2;
char path[BUFSIZ];
int lc;
int fd;
int ret;
tst_parse_opts(argc, argv, NULL, NULL);
setup();
for (lc = 0; TEST_LOOPING(lc); lc++) {
tst_count = 0;
parentuid = geteuid();
parentgid = getegid();
cpid1 = ltp_clone_quick(CLONE_NEWUSER | SIGCHLD,
(void *)child_fn1, NULL);
if (cpid1 < 0)
tst_brkm(TBROK | TERRNO, cleanup,
"cpid1 clone failed");
cpid2 = ltp_clone_quick(CLONE_NEWUSER | SIGCHLD,
(void *)child_fn2, NULL);
if (cpid2 < 0)
tst_brkm(TBROK | TERRNO, cleanup,
"cpid2 clone failed");
if (access("/proc/self/setgroups", F_OK) == 0) {
sprintf(path, "/proc/%d/setgroups", cpid1);
fd = SAFE_OPEN(cleanup, path, O_WRONLY, 0644);
SAFE_WRITE(cleanup, 1, fd, "deny", 4);
SAFE_CLOSE(cleanup, fd);
/* If the setgroups file has the value "deny",
* then the setgroups(2) system call can't
* subsequently be reenabled (by writing "allow" to
* the file) in this user namespace. (Attempts to
* do so will fail with the error EPERM.)
*/
/* test that setgroups can't be re-enabled */
fd = SAFE_OPEN(cleanup, path, O_WRONLY, 0644);
ret = write(fd, "allow", 5);
if (ret != -1) {
tst_brkm(TBROK | TERRNO, cleanup,
"write action should fail");
} else if (errno != EPERM) {
tst_brkm(TBROK | TERRNO, cleanup,
"unexpected error: \n");
}
SAFE_CLOSE(cleanup, fd);
tst_resm(TPASS, "setgroups can't be re-enabled");
sprintf(path, "/proc/%d/setgroups", cpid2);
fd = SAFE_OPEN(cleanup, path, O_WRONLY, 0644);
SAFE_WRITE(cleanup, 1, fd, "deny", 4);
SAFE_CLOSE(cleanup, fd);
}
updatemap(cpid1, UID_MAP, CHILD1UID, parentuid, cleanup);
updatemap(cpid2, UID_MAP, CHILD2UID, parentuid, cleanup);
updatemap(cpid1, GID_MAP, CHILD1GID, parentgid, cleanup);
updatemap(cpid2, GID_MAP, CHILD2GID, parentgid, cleanup);
TST_SAFE_CHECKPOINT_WAKE_AND_WAIT(cleanup, 1);
tst_record_childstatus(cleanup, cpid1);
tst_record_childstatus(cleanup, cpid2);
}
cleanup();
tst_exit();
}
开发者ID:AiprNick,项目名称:ltp,代码行数:75,代码来源:userns03.c
示例9: stop_watch
k8s::~k8s()
{
stop_watch();
cleanup();
}
开发者ID:thesrinivas,项目名称:rakshak,代码行数:5,代码来源:k8s.cpp
示例10: mainLoop
/* main loop */
static void mainLoop(void)
{
ARUint8 *dataPtr;
ARMarkerInfo *marker_info;
int marker_num;
float curPaddlePos[3];
int i;
double err;
double angle;
err=0.;
/* grab a video frame */
if( (dataPtr = (ARUint8 *)arVideoGetImage()) == NULL ) {
arUtilSleep(2);
return;
}
if( count == 0 ) arUtilTimerReset();
count++;
/* detect the markers in the video frame */
if( arDetectMarkerLite(dataPtr, thresh, &marker_info, &marker_num) < 0 ) {
cleanup();
exit(0);
}
argDrawMode2D();
if( !arDebug ) {
argDispImage( dataPtr, 0,0 );
}
else {
argDispImage( dataPtr, 1, 1 );
if( arImageProcMode == AR_IMAGE_PROC_IN_HALF )
argDispHalfImage( arImage, 0, 0 );
else
argDispImage( arImage, 0, 0);
glColor3f( 1.0, 0.0, 0.0 );
glLineWidth( 1.0 );
for( i = 0; i < marker_num; i++ ) {
argDrawSquare( marker_info[i].vertex, 0, 0 );
}
glLineWidth( 1.0 );
}
arVideoCapNext();
for( i = 0; i < marker_num; i++ )
marker_flag[i] = 0;
/* get the paddle position */
paddleGetTrans(paddleInfo, marker_info, marker_flag,
marker_num, &cparam);
/* draw the 3D models */
glClearDepth( 1.0 );
glClear(GL_DEPTH_BUFFER_BIT);
/* get the translation from the multimarker pattern */
if( (err=arMultiGetTransMat(marker_info, marker_num, config)) < 0 ) {
argSwapBuffers();
return;
}
// printf("err = %f\n", err);
if(err > 100.0 ) {
argSwapBuffers();
return;
}
//draw a red ground grid
drawGroundGrid( config->trans, 15, 150.0, 110.0, 0.0);
/* find the paddle position relative to the base */
if (paddleInfo->active)
findPaddlePosition(curPaddlePos,paddleInfo->trans,config->trans);
/* checking for paddle gesture */
if( paddleInfo->active)
{
int findItem=-1;
if (myPaddleItem.item!=-1)
{
if( check_incline(paddleInfo->trans, config->trans, &angle) ) {
myPaddleItem.x += 2.0 * cos(angle);
myPaddleItem.y += 2.0 * sin(angle);
if( myPaddleItem.x*myPaddleItem.x +
myPaddleItem.y*myPaddleItem.y > 900.0 ) {
myPaddleItem.x -= 2.0 * cos(angle);
myPaddleItem.y -= 2.0 * sin(angle);
myListItem.item[myPaddleItem.item].onpaddle=0;
myListItem.item[myPaddleItem.item].pos[0]=curPaddlePos[0];
myListItem.item[myPaddleItem.item].pos[1]=curPaddlePos[1];
myPaddleItem.item = -1;
}
}
}
else
//.........这里部分代码省略.........
开发者ID:nslo,项目名称:augmented-task-completion,代码行数:101,代码来源:paddleDemo.c
示例11: cleanup
KinectManager::~KinectManager(void)
{
cleanup();
}
开发者ID:robertwinchell,项目名称:KinectSTK,代码行数:4,代码来源:kinect_manager.cpp
示例12: main
/***********************************************************************
* Main
***********************************************************************/
int main(int ac, char **av)
{
int lc; /* loop counter */
char *msg; /* message returned from parse_opts */
char *fname;
char *desc;
int ind;
struct stat *stbuf;
struct sigaction sa, osa;
/***************************************************************
* parse standard options
***************************************************************/
if ((msg = parse_opts(ac, av, (option_t *) NULL, NULL)) != (char *)NULL) {
tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
tst_exit();
}
/***************************************************************
* perform global setup for test
***************************************************************/
setup();
/* set the expected errnos... */
TEST_EXP_ENOS(exp_enos);
/***************************************************************
* check looping state if -c option given
***************************************************************/
for (lc = 0; TEST_LOOPING(lc); lc++) {
/* reset Tst_count in case we are looping. */
Tst_count = 0;
for (ind = 0; Test_cases[ind].desc != NULL; ind++) {
fname = Test_cases[ind].pathname;
desc = Test_cases[ind].desc;
stbuf = Test_cases[ind].stbuf;
if (stbuf == (struct stat *)-1) {
/* special sig11 case */
sa.sa_handler = &sig11_handler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
sigaction(SIGSEGV, NULL, &osa);
sigaction(SIGSEGV, &sa, NULL);
if (setjmp(sig11_recover)) {
TEST_RETURN = -1;
TEST_ERRNO = EFAULT;
} else {
TEST(stat(fname, stbuf));
}
sigaction(SIGSEGV, &osa, NULL);
} else {
/*
* Call stat(2)
*/
TEST(stat(fname, stbuf));
}
/* check return code */
if (TEST_RETURN == -1) {
if (STD_FUNCTIONAL_TEST) {
if (TEST_ERRNO ==
Test_cases[ind].exp_errno)
tst_resm(TPASS,
"stat(<%s>, &stbuf) Failed, errno=%d",
desc, TEST_ERRNO);
else
tst_resm(TFAIL,
"stat(<%s>, &stbuf) Failed, errno=%d, expected errno:%d",
desc, TEST_ERRNO,
Test_cases[ind].
exp_errno);
} else
Tst_count++;
} else {
tst_resm(TFAIL,
"stat(<%s>, &stbuf) returned %ld, expected -1, errno:%d",
desc, TEST_RETURN,
Test_cases[ind].exp_errno);
}
}
} /* End for TEST_LOOPING */
/***************************************************************
* cleanup and exit
***************************************************************/
cleanup();
return 0;
} /* End main */
开发者ID:Federico2014,项目名称:edg4x-rose,代码行数:100,代码来源:syscall_tst.195.6.c
示例13: main
int main(int ac, char **av)
{
int lc;
char *msg;
char read_buffer[BUFSIZ]; /* buffer used to read data from file */
/* Parse standard options given to run the test. */
if ((msg = parse_opts(ac, av, NULL, NULL)) != NULL)
tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
setup();
for (lc = 0; TEST_LOOPING(lc); lc++) {
Tst_count = 0;
/*
* Call sync(2) to commit buffer data to disk.
*/
TEST_VOID(sync());
if (TEST_RETURN == -1) {
tst_resm(TFAIL, "%s, Failed, errno=%d : %s",
TCID, TEST_ERRNO, strerror(TEST_ERRNO));
} else {
/*
* Perform functional verification if test
* executed without (-f) option.
*/
if (STD_FUNCTIONAL_TEST) {
/* Set the file ptr to b'nning of file */
if (lseek(fildes, 0, SEEK_SET) < 0) {
tst_brkm(TFAIL, cleanup, "lseek() "
"failed on %s, error=%d",
TEMP_FILE, errno);
}
/* Read the contents of file */
if (read(fildes, read_buffer,
sizeof(read_buffer)) > 0) {
if (strcmp(read_buffer, write_buffer)) {
tst_resm(TFAIL, "Data read "
"from %s doesn't match "
"with witten data",
TEMP_FILE);
} else {
tst_resm(TPASS, "Functionality "
"of sync() successful");
}
} else {
tst_brkm(TFAIL, cleanup,
"read() Fails on %s, error=%d",
TEMP_FILE, errno);
}
} else {
tst_resm(TPASS, "call succeeded");
}
}
Tst_count++; /* incr. TEST_LOOP counter */
}
cleanup();
tst_exit();
}
开发者ID:Nan619,项目名称:ltp-ddt,代码行数:65,代码来源:sync02.c
示例14: main
int main(int ac, char **av)
{
int lc; /* loop counter */
char *msg; /* message returned from parse_opts */
/***************************************************************
* parse standard options
***************************************************************/
if ((msg = parse_opts(ac, av, (option_t *) NULL, NULL)) != (char *)NULL)
tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg);
/***************************************************************
* perform global setup for test
***************************************************************/
setup();
/* set the expected errnos... */
TEST_EXP_ENOS(exp_enos);
/***************************************************************
* check looping state if -c option given
***************************************************************/
for (lc = 0; TEST_LOOPING(lc); lc++) {
/* reset Tst_count in case we are looping. */
Tst_count = 0;
/*
* Call fcntl(2) with F_DUPFD argument on fname
*/
TEST(fcntl(fd, F_DUPFD, 0));
/* check return code */
if (TEST_RETURN == -1) {
TEST_ERROR_LOG(TEST_ERRNO);
tst_resm(TFAIL,
"fcntl(%s, F_DUPFD, 0) Failed, errno=%d : %s",
fname, TEST_ERRNO, strerror(TEST_ERRNO));
} else {
/***************************************************************
* only perform functional verification if flag set (-f not given)
***************************************************************/
if (STD_FUNCTIONAL_TEST) {
/* No Verification test, yet... */
tst_resm(TPASS,
"fcntl(%s, F_DUPFD, 0) returned %ld",
fname, TEST_RETURN);
}
if (close(TEST_RETURN) == -1) {
tst_resm(TWARN | TERRNO,
"close(%s) Failed",
fname);
}
}
} /* End for TEST_LOOPING */
/***************************************************************
* cleanup and exit
***************************************************************/
cleanup();
return 0;
} /* End main */
开发者ID:Federico2014,项目名称:edg4x-rose,代码行数:65,代码来源:syscall_tst.221.02.c
示例15: main
int main(int argc, char **argv)
{
char *msg; /* message returned from parse_opts */
/* parse standard options */
msg = parse_opts(argc, argv, NULL, NULL);
if (msg != NULL) {
tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
tst_exit();
}
setup();
#if HAVE_NUMA_MOVE_PAGES
unsigned int i;
int lc; /* loop counter */
unsigned int from_node;
unsigned int to_node;
int ret;
ret = get_allowed_nodes(NH_MEMS, 2, &from_node, &to_node);
if (ret < 0)
tst_brkm(TBROK|TERRNO, cleanup, "get_allowed_nodes: %d", ret);
/* check for looping state if -i option is given */
for (lc = 0; TEST_LOOPING(lc); lc++) {
void *pages[N_TEST_PAGES] = { 0 };
int nodes[N_TEST_PAGES];
int status[N_TEST_PAGES];
pid_t cpid;
sem_t *sem;
/* reset Tst_count in case we are looping */
Tst_count = 0;
ret = alloc_shared_pages_on_node(pages + SHARED_PAGE,
N_SHARED_PAGES, from_node);
if (ret == -1)
continue;
ret = alloc_pages_on_node(pages + UNSHARED_PAGE,
N_UNSHARED_PAGES, from_node);
if (ret == -1)
goto err_free_shared;
for (i = 0; i < N_TEST_PAGES; i++) {
nodes[i] = to_node;
}
sem = alloc_sem(MAX_SEMS);
if (sem == NULL) {
goto err_free_unshared;
}
/*
* Fork a child process so that the shared pages are
* now really shared between two processes.
*/
cpid = fork();
if (cpid == -1) {
tst_resm(TBROK, "forking child failed");
goto err_free_sem;
} else if (cpid == 0) {
child(pages, sem);
}
/* Wait for child to setup and signal. */
if (sem_wait(&sem[SEM_CHILD_SETUP]) == -1)
tst_resm(TWARN | TERRNO, "error wait semaphore");
ret = numa_move_pages(0, N_TEST_PAGES, pages, nodes,
status, MPOL_MF_MOVE);
TEST_ERRNO = errno;
if (ret == -1) {
tst_resm(TFAIL | TERRNO, "move_pages unexpectedly failed");
goto err_kill_child;
}
if (status[SHARED_PAGE] == -EACCES)
tst_resm(TPASS, "status[%d] set to expected -EACCES",
SHARED_PAGE);
else
tst_resm(TFAIL, "status[%d] is %d",
SHARED_PAGE, status[SHARED_PAGE]);
err_kill_child:
/* Test done. Ask child to terminate. */
if (sem_post(&sem[SEM_PARENT_TEST]) == -1)
tst_resm(TWARN | TERRNO, "error post semaphore");
/* Read the status, no zombies! */
wait(NULL);
err_free_sem:
free_sem(sem, MAX_SEMS);
err_free_unshared:
free_pages(pages + UNSHARED_PAGE, N_UNSHARED_PAGES);
err_free_shared:
free_shared_pages(pages + SHARED_PAGE, N_SHARED_PAGES);
}
#else
//.........这里部分代码省略.........
开发者ID:joyforu,项目名称:android-ltp-ndk,代码行数:101,代码来源:move_pages05.c
示例16: cleanup
CGDISimpleThread::~CGDISimpleThread(void) {
cleanup();
}
开发者ID:eugenis,项目名称:pixie,代码行数:3,代码来源:GDISimpleThread.cpp
示例17: run
void run() {
initWindow();
initVulkan();
mainLoop();
cleanup();
}
开发者ID:cdglove,项目名称:VulkanTutorial,代码行数:6,代码来源:11_render_passes.cpp
示例18: setIsRunning
void CGDISimpleThread::run() {
emit setIsRunning( true );
init();
delayTime = 10; // initial delay time
frameCounter = 0;
frameTimer.start();
while( !*stopThread ) {
if ( *readyToProcess == true ) {
// Check for resolution changes
int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
if ( nScreenWidth != ScreenWidth || nScreenHeight != ScreenHeight ) {
ScreenWidth = nScreenWidth;
ScreenHeight = nScreenHeight;
cleanupBuffers();
initBuffers();
}
// Creating and filling regions data
CRegions * regions = new CRegions( settings->getHorizontalSegmentWidth( ScreenWidth ), settings->getHorizontalHeight( ScreenHeight ),
settings->getVerticalWidth( ScreenWidth ), settings->getVerticalSegmentHeight( ScreenHeight ) );
// Horizontals
SelectObject( hCaptureDC, hCaptureBitmapH );
// Top
for ( unsigned short x = 0; x < settings->LEDnumH; x++ ) {
BitBlt( hCaptureDC, 0, 0, regions->hWidth, regions->hHeight, hDesktopDC, x * regions->hWidth, 0, SRCCOPY|CAPTUREBLT );
GetBitmapBits( hCaptureBitmapH, bufHSize, bufH );
unsigned char * bufH_tmp = new unsigned char[ bufHSize ];
memcpy( bufH_tmp, bufH, bufHSize );
regions->regionHTop.push_back( bufH_tmp );
}
// Bottom
for ( unsigned short x = 0; x < settings->LEDnumH; x++ ) {
BitBlt( hCaptureDC, 0, 0, regions->hWidth, regions->hHeight, hDesktopDC, x * regions->hWidth, ScreenHeight - regions->hHeight, SRCCOPY|CAPTUREBLT );
GetBitmapBits( hCaptureBitmapH, bufHSize, bufH );
unsigned char * bufH_tmp = new unsigned char[ bufHSize ];
memcpy( bufH_tmp, bufH, bufHSize );
regions->regionHBottom.push_back( bufH_tmp );
}
// Verticals
SelectObject(hCaptureDC,hCaptureBitmapV);
// Left
for ( int x = 0; x < settings->LEDnumV; x++ ) {
BitBlt( hCaptureDC, 0, 0, regions->vWidth, regions->vHeight, hDesktopDC, 0, x * regions->vHeight, SRCCOPY|CAPTUREBLT );
GetBitmapBits( hCaptureBitmapV, bufVSize, bufV );
unsigned char * bufV_tmp = new unsigned char[ bufVSize ];
memcpy( bufV_tmp, bufV, bufVSize );
regions->regionVLeft.push_back( bufV_tmp );
}
// Right
for ( int x = 0; x < settings->LEDnumV; x++ ) {
BitBlt( hCaptureDC, 0, 0, regions->vWidth, regions->vHeight, hDesktopDC, ScreenWidth - regions->vWidth, x * regions->vHeight, SRCCOPY|CAPTUREBLT );
GetBitmapBits( hCaptureBitmapV, bufVSize, bufV );
unsigned char * bufV_tmp = new unsigned char[ bufVSize ];
memcpy( bufV_tmp, bufV, bufVSize );
regions->regionVRight.push_back( bufV_tmp );
}
*readyToProcess = false;
emit onImageCaptured( regions );
++frameCounter;
updateDelayTime();
}
usleep( delayTime );
}
cleanup();
emit setIsRunning( false );
//*stopThread = true;
}
开发者ID:eugenis,项目名称:pixie,代码行数:85,代码来源:GDISimpleThread.cpp
示例19: cleanup
~OgreRenderer() { cleanup(); }
开发者ID:DavidBairamian,项目名称:openmw,代码行数:1,代码来源:renderer.hpp
示例20: keyDown
void keyDown(unsigned char key, int x, int y)
{
switch(key)
{
// Exit if esc or q is pressed
case 27:
case 'q':
glutDestroyWindow(win);
cleanup();
exit(0);
break;
/* change shape */
case 'o':
if (options[OPT_SHADER_GEN_SHAPE] == FALSE) {
currentShape = (currentShape + 1) % 6;
}
else {
currentShape = ((currentShape + 1) % 3) + 6;
}
strcpy(drawMethodString, currentDrawingMethod[currentShape][0]);
updateBuffer = TRUE;
updateRandering();
break;
/* increase tessellation */
case 't':
case 'T':
if (key == 'T') {
uTessellation = min(GEOMETRY_BASE_MAX, uTessellation * 2);
updateRandering();
updateBuffer = TRUE;
}
else {
uTessellation = max(GEOMETRY_BASE, uTessellation / 2);
updateRandering();
updateBuffer = TRUE;
}
sprintf(tessString,"Tessellation: %d x %d",uTessellation,uTessellation);
break;
/* toggle light */
case 'l':
options[OPT_LIGHTENING] = !options[OPT_LIGHTENING];
if (options[OPT_LIGHTENING])
glEnable(GL_LIGHTING);
else
glDisable(GL_LIGHTING);
break;
/* display normal */
case 'n':
if (options[OPT_SHADER_GEN_SHAPE] == FALSE &&
options[OPT_SHADER_BUMPMAP] == FALSE &&
options[OPT_SHADER_DISPMAP] == FALSE ) {
options[OPT_DRAW_NORMAL] = !options[OPT_DRAW_NORMAL];
}
break;
/* toggle flat and smooth shading */
case 'f':
options[OPT_SHADING_SMOOTH_FLAT] =
!options[OPT_SHADING_SMOOTH_FLAT];
if (options[OPT_SHADING_SMOOTH_FLAT])
glShadeModel(GL_FLAT);
else
glShadeModel(GL_SMOOTH);
break;
/* increase and decrease specular */
case 'h':
case 'H':
if (key == 'H')
shininess += 1.0;
else
shininess -= 1.0;
shininess = fmin(fmax(shininess, 0.0), SHININESS_MAX);
break;
/* local view toggle */
case 'v':
options[OPT_LOCAL_VIEWER] = !options[OPT_LOCAL_VIEWER];
if (options[OPT_LOCAL_VIEWER] == TRUE) {
uLocalViewer = true;
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);
strcpy(localViewString,"LocalView: ON");
}
else {
uLocalViewer = false;
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE);
strcpy(localViewString,"LocalView: OFF");
}
break;
/* display all settings or only frame rate */
case 'x':
case 'X':
//.........这里部分代码省略.........
开发者ID:crankycode,项目名称:3D_Real_Time_Rendering_1,代码行数:101,代码来源:main.c
注:本文中的cleanup函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论