Move screen unlocking inside cleanup()
This commit is contained in:
		
							parent
							
								
									e378f735d8
								
							
						
					
					
						commit
						39fb855aa1
					
				
							
								
								
									
										20
									
								
								slock.c
								
								
								
								
							
							
						
						
									
										20
									
								
								slock.c
								
								
								
								
							| 
						 | 
				
			
			@ -234,6 +234,11 @@ unlockscreen(Display *dpy, Lock *lock)
 | 
			
		|||
static void
 | 
			
		||||
cleanup(Display *dpy)
 | 
			
		||||
{
 | 
			
		||||
	int s;
 | 
			
		||||
 | 
			
		||||
	for (s = 0; s < nscreens; ++s)
 | 
			
		||||
		unlockscreen(dpy, locks[s]);
 | 
			
		||||
 | 
			
		||||
	free(locks);
 | 
			
		||||
	XCloseDisplay(dpy);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -305,8 +310,6 @@ lockscreen(Display *dpy, int screen)
 | 
			
		|||
		fprintf(stderr, "slock: unable to grab mouse pointer for screen %d\n", screen);
 | 
			
		||||
	if (kbgrab != GrabSuccess)
 | 
			
		||||
		fprintf(stderr, "slock: unable to grab keyboard for screen %d\n", screen);
 | 
			
		||||
	running = 0;
 | 
			
		||||
	unlockscreen(dpy, lock);
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -359,19 +362,21 @@ main(int argc, char **argv) {
 | 
			
		|||
 | 
			
		||||
	/* get number of screens in display "dpy" and blank them */
 | 
			
		||||
	nscreens = ScreenCount(dpy);
 | 
			
		||||
	if (!(locks = malloc(sizeof(Lock *) * nscreens))) {
 | 
			
		||||
	if (!(locks = calloc(nscreens, sizeof(Lock *)))) {
 | 
			
		||||
		XCloseDisplay(dpy);
 | 
			
		||||
		die("slock: out of memory\n");
 | 
			
		||||
	}
 | 
			
		||||
	for (nlocks = 0, s = 0; s < nscreens; s++) {
 | 
			
		||||
		if ((locks[s] = lockscreen(dpy, s)) != NULL)
 | 
			
		||||
			nlocks++;
 | 
			
		||||
		else
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	XSync(dpy, 0);
 | 
			
		||||
 | 
			
		||||
	/* did we actually manage to lock anything? */
 | 
			
		||||
	if (nlocks == 0) {
 | 
			
		||||
		/* nothing to protect */
 | 
			
		||||
	/* did we manage to lock everything? */
 | 
			
		||||
	if (nlocks != nscreens) {
 | 
			
		||||
		running = 0;
 | 
			
		||||
		cleanup(dpy);
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -400,9 +405,6 @@ main(int argc, char **argv) {
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
	/* password ok, unlock everything and quit */
 | 
			
		||||
	for (s = 0; s < nscreens; s++)
 | 
			
		||||
		unlockscreen(dpy, locks[s]);
 | 
			
		||||
 | 
			
		||||
	cleanup(dpy);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue