Make granule of reuse the granule of release (avoid exporting 30 lines)
This commit is contained in:
		@@ -1,7 +1,6 @@
 | 
			
		||||
package afterlock
 | 
			
		||||
 | 
			
		||||
import(
 | 
			
		||||
	"after-lock/atomicflag"
 | 
			
		||||
	"time"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"errors"
 | 
			
		||||
@@ -30,8 +29,8 @@ type AfterLock struct {
 | 
			
		||||
	LoopDelay uint
 | 
			
		||||
	keyboardDeviceNode string
 | 
			
		||||
	wg sync.WaitGroup
 | 
			
		||||
	stopFlag *atomicflag.AtomicFlag
 | 
			
		||||
	keypressFlag *atomicflag.AtomicFlag
 | 
			
		||||
	stopFlag *AtomicFlag
 | 
			
		||||
	keypressFlag *AtomicFlag
 | 
			
		||||
	Display Display
 | 
			
		||||
	LockScreen Lockscreen
 | 
			
		||||
	KeypressDetector KeypressDetector
 | 
			
		||||
@@ -41,8 +40,8 @@ type AfterLock struct {
 | 
			
		||||
func New(keyboardDeviceNode string) *AfterLock {
 | 
			
		||||
	return &AfterLock{
 | 
			
		||||
		keyboardDeviceNode: keyboardDeviceNode,
 | 
			
		||||
		stopFlag: atomicflag.New(false),
 | 
			
		||||
		keypressFlag: atomicflag.New(false),
 | 
			
		||||
		stopFlag: NewAtomicFlag(false),
 | 
			
		||||
		keypressFlag: NewAtomicFlag(false),
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										31
									
								
								afterlock/atomicflag.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								afterlock/atomicflag.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
package afterlock
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"sync"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// AtomicFlag implements a simple, thread-safe boolean flag
 | 
			
		||||
type AtomicFlag struct {
 | 
			
		||||
	value bool
 | 
			
		||||
	mutex sync.RWMutex
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewAtomicFlag builds a new instance
 | 
			
		||||
func NewAtomicFlag(value bool) *AtomicFlag {
 | 
			
		||||
	return &AtomicFlag{value: value}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Get the flag
 | 
			
		||||
func (f *AtomicFlag) Get() bool {
 | 
			
		||||
	f.mutex.RLock()
 | 
			
		||||
	defer f.mutex.RUnlock()
 | 
			
		||||
	return f.value
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Set the flag
 | 
			
		||||
func (f *AtomicFlag) Set(value bool) {
 | 
			
		||||
	f.mutex.Lock()
 | 
			
		||||
	defer f.mutex.Unlock()
 | 
			
		||||
	f.value = value
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user