int minor = TDM_BACKEND_GET_ABI_MINOR(module->abi_version);
if (major < abimaj) goto failed;
- if (major > abimaj) return 1;
+ if (major > abimaj) return 0;
if (minor < abimin) goto failed;
- return 1;
+ return 0;
failed:
TDM_ERR("The ABI version(%d.%d) of '%s' is less than %d.%d",
major, minor, module->name ? module->name : "unknown",
abimaj, abimin);
- return 0;
+ return -1;
}
EXTERN tdm_error
}
EXTERN tdm_error
+tdm_backend_register_func_hwc_window(tdm_display *dpy, tdm_func_hwc_window *func_hwc_window)
+{
+ tdm_backend_module *module;
+
+ TDM_RETURN_VAL_IF_FAIL(TDM_MUTEX_IS_LOCKED(), TDM_ERROR_OPERATION_FAILED);
+
+ BACKEND_FUNC_ENTRY();
+
+ TDM_RETURN_VAL_IF_FAIL(func_hwc_window != NULL, TDM_ERROR_INVALID_PARAMETER);
+
+ module = private_display->module_data;
+ if (_check_abi_version(module, 2, 0) < 0)
+ return TDM_ERROR_BAD_MODULE;
+
+ private_display->func_hwc_window = *func_hwc_window;
+
+ return TDM_ERROR_NONE;
+}
+
+EXTERN tdm_error
tdm_backend_register_func_pp(tdm_display *dpy, tdm_func_pp *func_pp)
{
TDM_RETURN_VAL_IF_FAIL(TDM_MUTEX_IS_LOCKED(), TDM_ERROR_OPERATION_FAILED);
return TDM_ERROR_NONE;
}
+EXTERN tdm_error
+tdm_backend_trigger_need_validate_event(tdm_output *output)
+{
+ tdm_private_output *private_output;
+ uint64_t value;
+ int res;
+
+ TDM_RETURN_VAL_IF_FAIL(output != NULL, TDM_ERROR_INVALID_PARAMETER);
+
+ private_output = (tdm_private_output*)output;
+ value = 1;
+
+ /* do not lock the global display lock here */
+
+ res = write(private_output->need_validate.event_fd, &value, sizeof(value));
+ if (res < 0)
+ return TDM_ERROR_OPERATION_FAILED;
+
+ return TDM_ERROR_NONE;
+}