X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=generate-binding-glue.py;h=7e003a5389481975ca6345c296186a9475f35ecb;hb=cc06687c8043b93b08202c6c90e588d9b1897c31;hp=cec4feaa1a4ac1fbce3f7532c50b105c0a2ccc45;hpb=1958da2130c04fbcc0bf1da2c40b57c785657e48;p=staging%2Fwindowmanager.git diff --git a/generate-binding-glue.py b/generate-binding-glue.py index cec4fea..7e003a5 100644 --- a/generate-binding-glue.py +++ b/generate-binding-glue.py @@ -1,5 +1,21 @@ #!/usr/bin/python3 +# +# Copyright (C) 2017 Mentor Graphics Development (Deutschland) GmbH +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + import sys OUT = sys.stdout @@ -33,6 +49,7 @@ def emit_func_impl(api, f): def emit_func(api, f): p('void %(impl_name)s(afb_req req) noexcept {' % f) + p(' std::lock_guard guard(binding_m);') p(' if (g_afb_instance == nullptr) {', ' afb_req_fail(req, "failed", "Binding not initialized, did the compositor die?");', ' return;', @@ -71,6 +88,7 @@ def emit_afb_api(api): p('struct binding_api {') p(' typedef wm::result result_type;') p(' struct wm::App *app;') + p(' void send_event(char const *evname, char const *label);') for f in api['functions']: p(' result_type %(name)s(' % f + ', '.join(map(lambda x: '%(type)s %(name)s' % x, f.get('args', []))) + ');') p('};', '') @@ -84,16 +102,36 @@ API = { 'api': 'g_afb_instance->app.api.', # where are our API functions 'functions': [ { - 'name': 'register_surface', + 'name': 'request_surface', #'return_type': 'int', # Or do they return all just some json? 'args': [ # describes the functions arguments, and their names as found in the json request - { 'name': 'appid', 'type': 'uint32_t', 'jtype': 'int' }, # XXX: lookup jtypes automatically? i.e. char*|const char* would be string? - { 'name': 'surfaceid', 'type': 'uint32_t', 'jtype': 'int' }, + { 'name': 'drawing_name', 'type': 'char const*', 'jtype': 'string' }, + ], + }, + { + 'name': 'activate_surface', + 'args': [ + { 'name': 'drawing_name', 'type': 'char const*', 'jtype': 'string' }, ], }, + { + 'name': 'deactivate_surface', + 'args': [ + { 'name': 'drawing_name', 'type': 'char const*', 'jtype': 'string' }, + ], + }, + { + 'name': 'enddraw', + 'args': [ + { 'name': 'drawing_name', 'type': 'char const*', 'jtype': 'string' }, + ], + }, + { 'name': 'list_drawing_names', }, + { 'name': 'debug_status', }, { 'name': 'debug_layers', }, { 'name': 'debug_surfaces', }, + { 'name': 'debug_terminate' }, ] }