mOnActivate and Deactivate triggered more than once

Hi, as the title says, upon changing pages, I get multiple (2) mOnActivate and Deactivate events. In fact, even at first activation, I get 3 times the mOnActivate event. I see no reason for this, so it may be a bug, otherwise I would be happy to know the reason behind this.

In the following sample, I have two pages with a pageNext binding, to demonstrate the issue.

To me, the mOnActivate event is important, because I’m using it to initialize some leds of my controller. When it gets triggered multiple times, my controller behaves erratically. I’ve already found a workaround, however, in my opinion, this has to be investigated, unless of course there is something quite wrong with my configuration and the below code works as expected to other users’ ones.

var midiremote_api = require('midiremote_api_v1')

var deviceDriver = midiremote_api.makeDeviceDriver('Test', 'test', 'test')

var midiInput = deviceDriver.mPorts.makeMidiInput("in")
var midiOutput = deviceDriver.mPorts.makeMidiOutput("out")

var detectWin = deviceDriver.makeDetectionUnit()
    .detectPortPair(midiInput, midiOutput)
makeActivationHandling(deviceDriver, midiOutput,midiInput)

var surface = deviceDriver.mSurface

var surfaceElements = makeSurfaceElements()

function makeSurfaceElements() {
    var surfaceElements = {}
    var button=surface.makeButton(0,0,10,10)

    return surfaceElements


makeHostMapping(midiremote_api.mDefaults, deviceDriver, surfaceElements, surface, midiOutput)

function makeActivationHandling(deviceDriver, midiOutput,midiInput) {
    deviceDriver.mOnActivate = function (context) {
        console.log("Activating device")

 * @param {MR_HostDefaults} hostDefaults
 * @param {MR_DeviceDriver} deviceDriver
 * @param {Object} surfaceElements
function makeHostMapping(hostDefaults, deviceDriver, surfaceElements, surface, midiOutput) {
    var resPage = makePage("somePage",hostDefaults, deviceDriver, surfaceElements, midiOutput)
    page.mOnActivate = (function (context,activeMapping) {
        console.log("activating page 1")
    }).bind({ onActivate: resPage.onActivate })

    page.mOnDeactivate = (function (context,activeMapping) {
        console.log("deactivating page 1")
    }).bind({ onDeactivate: resPage.onDeactivate })

    var resPage2 = makePage("somePage2",hostDefaults, deviceDriver, surfaceElements, midiOutput)
    page2.mOnActivate = (function (context,activeMapping) {
        console.log("activating page 2")
    }).bind({ onActivate: resPage2.onActivate })
    page2.mOnDeactivate = (function (context,activeMapping) {
        console.log("deactivating page 2")
    }).bind({ onDeactivate: resPage2.onDeactivate })


function makePage(name,hostDefaults, /** @type {MR_DeviceDriver} */deviceDriver, surfaceElements, midiOutput) {
  /** @type {MR_FactoryMappingPage} */
    var page = deviceDriver.mMapping.makePage(name)

    var onActivate = function (context) {

    var OnDeactivate=function(context){
    return { page, onActivate,OnDeactivate}

1 Like