ssm: Make possible to set data via function

Use the same approach of GTask, making possible to set the data from a
function. Givent the fact that a SSM has now a device parameter, it's
generally not needed to pass an extra data value.

In such case make it possible to set it and to define a destroy-notify
function to handle its destruction when freeing the SSM.
This commit is contained in:
Marco Trevisan (Treviño)
2019-11-20 18:05:46 +01:00
committed by Benjamin Berg
parent 1319daba54
commit 7bc62821ee
20 changed files with 277 additions and 330 deletions

View File

@@ -202,8 +202,7 @@ cmd_interrupt_cb (FpiUsbTransfer *transfer,
static void
synaptics_cmd_run_state (FpiSsm *ssm,
FpDevice *dev,
void *user_data)
FpDevice *dev)
{
g_autoptr(FpiUsbTransfer) transfer = NULL;
FpiDeviceSynaptics *self = FPI_DEVICE_SYNAPTICS (dev);
@@ -235,7 +234,7 @@ synaptics_cmd_run_state (FpiSsm *ssm,
5000,
NULL,
cmd_recieve_cb,
user_data);
fpi_ssm_get_data (ssm));
break;
@@ -271,13 +270,10 @@ synaptics_cmd_run_state (FpiSsm *ssm,
}
static void
cmd_ssm_done (FpiSsm *ssm,
FpDevice *dev,
void *user_data,
GError *error)
cmd_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
{
FpiDeviceSynaptics *self = FPI_DEVICE_SYNAPTICS (dev);
SynCmdMsgCallback callback = user_data;
SynCmdMsgCallback callback = fpi_ssm_get_data (ssm);
self->cmd_ssm = NULL;
@@ -399,8 +395,8 @@ synaptics_sensor_cmd (FpiDeviceSynaptics *self,
self->cmd_ssm = fpi_ssm_new (FP_DEVICE (self),
synaptics_cmd_run_state,
SYNAPTICS_CMD_NUM_STATES,
callback);
SYNAPTICS_CMD_NUM_STATES);
fpi_ssm_set_data (self->cmd_ssm, callback, NULL);
fpi_ssm_start (self->cmd_ssm, cmd_ssm_done);
}