> All in all, I agree with you. It is over-complicated but I don't see
> how
> it could break with several operations from grilo (like, several
> async
> search/browse) as each OperationSpec stays in _G related to its
> operation-id. If you *can* break it easily, tell me how or even
> better,
> create a test under lua-factory [1] and attach to the BZ :-)
> 
> [1] https://git.gnome.org/browse/grilo-plugins/tree/tests/lua-factory

Each operation spec stays with its own operation-id as a key, yes, but
ALSO one is stored as "current" as you can see in
grl_lua_library_set_current_operation(). Here's the piece of code
responsible for it:

1686  lua_getglobal (L, LUA_ENV_TABLE);
1687  lua_pushstring (L, GRILO_LUA_OPERATION_INDEX);
1688  lua_pushlightuserdata (L, os);
1689  lua_settable (L, -3);

You can see that GRILO_LUA_OPERATION_INDEX is quite global.

As for the test, it's not that easy. We are talking race conditions
here, so an automated test would be a challenge. And a pointless one at
that, since you agree that moving away from global table is ultimately
a good idea anyways :)

> So, this changes a lot. What I like least is that you are splitting
> functions provided by grl-lua-library. I do like grl as a library -
> globally accessible.

> aside of `callback` which is the only one I think it makes sense to
> keep as an argument here.

Why is callback so different from options in your opinion? They are
both context-dependent in the very same way. They both do not make any
sense outside of their respective scopes for which they were created.
And they both do not belong to the globally accessible library, IMO.
_______________________________________________
grilo-list mailing list
grilo-list@gnome.org
https://mail.gnome.org/mailman/listinfo/grilo-list

Reply via email to