Fix: TriggerAction couldn't fire HIDScript during GadgetDeployment by other TriggerAction

This commit is contained in:
MaMe82
2018-11-22 21:46:41 +01:00
parent 452ca52689
commit 2bf2596fad
2 changed files with 11 additions and 6 deletions

View File

@@ -464,7 +464,10 @@ func (tam *TriggerActionManager) executeActionStartHidScript(evt *pb.Event, ta *
}
err := tam.rootSvc.SubSysUSB.HidScriptUsable()
if err != nil { return }
if err != nil {
fmt.Printf("Couldn't start HIDScript: %v\n", err)
return
}
scriptFile, err := ioutil.ReadFile(scriptPath)
if err != nil {

View File

@@ -104,6 +104,12 @@ func (gm *UsbGadgetManager) HandleEvent(event hid.Event) {
}
func (gm *UsbGadgetManager) HidScriptUsable() error {
// Fix: If a TriggerAction fires a HIDScript during Deployment of GadgetSettings, this method is called
// upfront, to check if mouse or keyboard are up
// We avoid returning false, if Deployment is still going on (undefined state), so we block
gm.gadgetSettingsLock.Lock()
defer gm.gadgetSettingsLock.Unlock()
if gm.hidCtl == nil {
return ErrHidNotUsable
}
@@ -537,11 +543,7 @@ func (gm *UsbGadgetManager) DeployGadgetSettings(settings *pb.GadgetSettings) (e
//Lock, only one change at a time
gm.gadgetSettingsLock.Lock()
//defer gm.gadgetSettingsLock.Unlock()
defer func() {
//fmt.Println("UNLOCKING DeployGadgetSettings")
gm.gadgetSettingsLock.Unlock()
}()
defer gm.gadgetSettingsLock.Unlock()
//fmt.Println("DeployGadgetSettings beyond lock ...")
err = ValidateGadgetSetting(settings)