Merge lp://staging/geis/client-arch into lp://staging/geis

Proposed by Stephen M. Webb
Status: Superseded
Proposed branch: lp://staging/geis/client-arch
Merge into: lp://staging/geis
Diff against target: 9682 lines (+7292/-647)
88 files modified
.bzrignore (+7/-1)
Makefile.am (+1/-0)
configure.ac (+4/-1)
include/geis/geis.h (+11/-8)
libs/Makefile.am (+1/-1)
libs/geis-dbus/Makefile.am (+41/-0)
libs/geis-dbus/geis_dbus.h (+37/-8)
libs/geis-dbus/geis_dbus_attr.c (+178/-0)
libs/geis-dbus/geis_dbus_attr.h (+57/-0)
libs/geis-dbus/geis_dbus_class.c (+126/-0)
libs/geis-dbus/geis_dbus_class.h (+45/-0)
libs/geis-dbus/geis_dbus_device.c (+152/-0)
libs/geis-dbus/geis_dbus_device.h (+61/-0)
libs/geis-dbus/geis_dbus_dispatcher.c (+486/-0)
libs/geis-dbus/geis_dbus_dispatcher.h (+116/-0)
libs/geis-dbus/geis_dbus_gesture_event.c (+516/-0)
libs/geis-dbus/geis_dbus_gesture_event.h (+55/-0)
libs/geis-dbus/geis_dbus_region.c (+91/-0)
libs/geis-dbus/geis_dbus_region.h (+47/-0)
libs/geis-dbus/geis_dbus_subscription.c (+506/-0)
libs/geis-dbus/geis_dbus_subscription.h (+206/-0)
libutouch-geis/Makefile.am (+5/-0)
libutouch-geis/backend/Makefile.am (+1/-1)
libutouch-geis/backend/dbus/Makefile.am (+34/-0)
libutouch-geis/backend/dbus/geis_dbus_backend.c (+248/-0)
libutouch-geis/backend/dbus/geis_dbus_client.c (+685/-0)
libutouch-geis/backend/dbus/geis_dbus_client.h (+97/-0)
libutouch-geis/backend/dbus/geis_dbus_locator.c (+268/-0)
libutouch-geis/backend/dbus/geis_dbus_locator.h (+62/-0)
libutouch-geis/backend/test_fixture/geis_backend_test_fixture.c (+7/-5)
libutouch-geis/backend/xcb/geis_xcb_backend.c (+10/-8)
libutouch-geis/backend/xcb/geis_xcb_backend_token.c (+4/-4)
libutouch-geis/backend/xcb/grail_gestures.c (+1/-1)
libutouch-geis/geis.c (+166/-158)
libutouch-geis/geis_attr.c (+143/-0)
libutouch-geis/geis_attr.h (+16/-0)
libutouch-geis/geis_backend.c (+2/-0)
libutouch-geis/geis_backend_multiplexor.c (+183/-74)
libutouch-geis/geis_backend_multiplexor.h (+51/-15)
libutouch-geis/geis_backend_protected.h (+2/-2)
libutouch-geis/geis_backend_token.c (+6/-4)
libutouch-geis/geis_backend_token.h (+32/-9)
libutouch-geis/geis_class.c (+2/-2)
libutouch-geis/geis_class.h (+1/-1)
libutouch-geis/geis_device.h (+1/-1)
libutouch-geis/geis_filter.c (+83/-0)
libutouch-geis/geis_filter.h (+51/-0)
libutouch-geis/geis_filter_term.c (+120/-0)
libutouch-geis/geis_filter_term.h (+8/-0)
libutouch-geis/geis_filterable.c (+151/-0)
libutouch-geis/geis_filterable.h (+116/-0)
libutouch-geis/geis_gesture_flick.c (+1/-1)
libutouch-geis/geis_private.h (+65/-59)
libutouch-geis/geis_subscription.c (+73/-10)
libutouch-geis/geis_subscription.h (+53/-0)
libutouch-geis/geis_timer.c (+5/-4)
libutouch-geis/geis_v1.c (+104/-45)
libutouch-geis/server/Makefile.am (+5/-2)
libutouch-geis/server/geis_dbus_announcer.c (+233/-0)
libutouch-geis/server/geis_dbus_announcer.h (+54/-0)
libutouch-geis/server/geis_dbus_client_proxy.c (+486/-0)
libutouch-geis/server/geis_dbus_client_proxy.h (+60/-0)
libutouch-geis/server/geis_dbus_proxy_box.c (+199/-0)
libutouch-geis/server/geis_dbus_proxy_box.h (+115/-0)
libutouch-geis/server/geis_dbus_server.c (+278/-154)
libutouch-geis/server/geis_dbus_server.h (+70/-30)
python/_geis_bindings/_geis_bindings.c (+3/-2)
python/geis/__init__.py (+6/-4)
testsuite/geis2/check_class.c (+1/-1)
testsuite/geis2/check_config.c (+1/-1)
testsuite/geis2/check_device.c (+1/-1)
testsuite/geis2/check_filter.c (+1/-1)
testsuite/geis2/check_frame.c (+1/-1)
testsuite/geis2/check_geis_new.c (+1/-1)
testsuite/geis2/check_region.c (+1/-1)
testsuite/geis2/check_subscription.c (+1/-1)
testsuite/libutouch-geis/Makefile.am (+1/-0)
testsuite/libutouch-geis/check_backend_multiplexor.c (+6/-2)
testsuite/libutouch-geis/check_backend_token.c (+1/-1)
testsuite/libutouch-geis/check_filter.c (+1/-1)
testsuite/libutouch-geis/check_geis_private.c (+4/-3)
testsuite/libutouch-geis/check_region.c (+1/-1)
testsuite/libutouch-geis/check_subscription.c (+1/-1)
testsuite/libutouch-geis/check_timer.c (+1/-1)
tools/Makefile.am (+1/-1)
tools/geis-server/Makefile.am (+33/-0)
tools/geis-server/geis-server.c (+85/-0)
tools/geisview/geisview (+39/-13)
To merge this branch: bzr merge lp://staging/geis/client-arch
Reviewer Review Type Date Requested Status
Chase Douglas (community) Needs Information
Review via email: mp+79329@code.staging.launchpad.net

This proposal has been superseded by a proposal from 2011-10-17.

Description of the change

Adds selectable client-server architecture using a private DBus.

I think at this point (most) functionality is there. May need some polish over the next cycle.

To post a comment you must log in.
Revision history for this message
Stephen M. Webb (bregma) wrote :

Added a trunk synch to resolve some merge conflicts.

lp://staging/geis/client-arch updated
196. By Stephen M. Webb

Synched to lp:utouch-geis.

Revision history for this message
Chase Douglas (chasedouglas) wrote :

A ton of code that looks very clean. I really like the changes from an aesthetic point of view. It's obvious that you put a lot of thought into how things should be structured!

Here's what I'm looking for in reviewing this code:

1. Are there any "black box" changes?
2. Does the code look clean? Does it appear to do what is stated in the merge request?
3. Does it work?
4. Are there any issues highlighted by the merge proposal description?

Note that I'm not doing a line by line review. There's too much code to review for that level of detail, and you're a trusted member of the development team.

For item 1, there are no changes in include/. Since there are no api changes, and it's assumed there are no abi changes, this criteria is fulfilled.

For item 2, the code is definitely clean. It does appear to do what is stated in the merge request in whole.

However, I don't see any change in the default backend choice, and I don't see any change in geisview that would cause it to use the new client-server backend. Am I missing something, or was this lost in a merge or rebase? I would prefer to see the default backend change to the client-server backend with a fallback to the xcb backend.

The geis server is under tools/. Is this implementation merely an example, or is it the defacto server that should be used? If it's the latter, I would prefer to move it to the top level. I feel putting it in tools/ gives the wrong impression that it is not an essential part of the project.

For item 3, I'm not ready to give an answer yet since I don't know that geisview is using the new architecture. (On IRC, Stephen explained how to test: tools/geis-server/geis-server and then tools/geisview/geisview).

For item 4, I would like to know what is left out by the statement in the merge proposal: "I think at this point (most) functionality is there." Please detail which functionality is missing?

Overall, I'm extremely happy with the changes, assuming the testing shows it works :). I look forward to merging the branch once these issues are resolved!

review: Needs Information
Revision history for this message
Stephen M. Webb (bregma) wrote :

On 10/13/2011 04:53 PM, Chase Douglas wrote:
> For item 1, there are no changes in include/. Since there are no api changes, and it's assumed there are no abi changes, this criteria is fulfilled.

There is a backwards-compatible API change in include/geis/geis.h with
the addition of the GEIS_INIT_UTOUCH_DBUS_BACKEND defined constant.

> For item 2, the code is definitely clean. It does appear to do what is stated in the merge request in whole.
>
> However, I don't see any change in the default backend choice, and I don't see any change in geisview that would cause it to use the new client-server backend. Am I missing something, or was this lost in a merge or rebase? I would prefer to see the default backend change to the client-server backend with a fallback to the xcb backend.

This was apparently clobbered by a last-minute merge from trunk with
manual conflict resolution. I will re-add the back end selection to the
geisview tool and make it command-line configurable, and resubmit.

Changing the default back end to the dbus-client is a little premature
until a proper daemon is set up complete with launch scripts (dbus
service?). This should wait until after the round of plugin
refactoring. Changing the default back-end is a one-line change.

> The geis server is under tools/. Is this implementation merely an example, or is it the defacto server that should be used? If it's the latter, I would prefer to move it to the top level. I feel putting it in tools/ gives the wrong impression that it is not an essential part of the project.

The program under tools is a test driver tool. Writing a proper daemon
application with attendant start and stop scripts, logging, and control
options should be a separate task not a part of the internal library
changes designed to enable that task.

All of the changes made under this merge request were made under the
original assumption that the geis server would run as a compiz plugin.
None of them are incompatible with running a standalone server and
neither do they require it.

We should consider making a "utouchd" daemon a separate project from the
utouch-geis library.

> For item 3, I'm not ready to give an answer yet since I don't know that geisview is using the new architecture. (On IRC, Stephen explained how to test: tools/geis-server/geis-server and then tools/geisview/geisview).

I will provide better instructions with the above-mentioned changes to
geisview.

> For item 4, I would like to know what is left out by the statement in the merge proposal: "I think at this point (most) functionality is there." Please detail which functionality is missing?

Yes, quite. The only known functional deficit is proper reconnection
from the client when the server has disconnected and then reconnected
again. After verbal discussions we decided to defer this functionality
to later in the interest of getting the client-server merge completed.

Revision history for this message
Chase Douglas (chasedouglas) wrote :
Download full text (3.5 KiB)

> On 10/13/2011 04:53 PM, Chase Douglas wrote:
> > For item 1, there are no changes in include/. Since there are no api
> changes, and it's assumed there are no abi changes, this criteria is
> fulfilled.
>
> There is a backwards-compatible API change in include/geis/geis.h with
> the addition of the GEIS_INIT_UTOUCH_DBUS_BACKEND defined constant.

Argh... I see now that although the unmerged revisions list below starts at commit 187, the client-arch commits really start at commit 159. I will need to re-review to include those commits as well.

> > For item 2, the code is definitely clean. It does appear to do what is
> stated in the merge request in whole.
> >
> > However, I don't see any change in the default backend choice, and I don't
> see any change in geisview that would cause it to use the new client-server
> backend. Am I missing something, or was this lost in a merge or rebase? I
> would prefer to see the default backend change to the client-server backend
> with a fallback to the xcb backend.
>
> This was apparently clobbered by a last-minute merge from trunk with
> manual conflict resolution. I will re-add the back end selection to the
> geisview tool and make it command-line configurable, and resubmit.
>
> Changing the default back end to the dbus-client is a little premature
> until a proper daemon is set up complete with launch scripts (dbus
> service?). This should wait until after the round of plugin
> refactoring. Changing the default back-end is a one-line change.

I'm not sure it's premature. The client-arch won't be used unless you have a server running, in which case we can probably assume the user knows what they are doing. The main reason I would like to switch the default is so we can test current clients of geis without having to recompile them. And, it would be switchable merely by running or killing the geis server. I will probably run the tools/ server by default in my installs just so we have some good testing.

> > The geis server is under tools/. Is this implementation merely an example,
> or is it the defacto server that should be used? If it's the latter, I would
> prefer to move it to the top level. I feel putting it in tools/ gives the
> wrong impression that it is not an essential part of the project.
>
> The program under tools is a test driver tool. Writing a proper daemon
> application with attendant start and stop scripts, logging, and control
> options should be a separate task not a part of the internal library
> changes designed to enable that task.
>
> All of the changes made under this merge request were made under the
> original assumption that the geis server would run as a compiz plugin.
> None of them are incompatible with running a standalone server and
> neither do they require it.
>
> We should consider making a "utouchd" daemon a separate project from the
> utouch-geis library.

Ok, that sounds reasonable.

> > For item 4, I would like to know what is left out by the statement in the
> merge proposal: "I think at this point (most) functionality is there." Please
> detail which functionality is missing?
>
> Yes, quite. The only known functional deficit is proper reconnection
> fr...

Read more...

Revision history for this message
Stephen M. Webb (bregma) wrote :

On 10/13/2011 09:03 PM, Chase Douglas wrote:
>
> Argh... I see now that although the unmerged revisions list below starts at commit 187, the client-arch commits really start at commit 159. I will need to re-review to include those commits as well.

Yeah, it was a big set of changes with a number of synchs with trunk
along the way.

> I'm not sure it's premature. The client-arch won't be used unless you have a server running, in which case we can probably assume the user knows what they are doing. The main reason I would like to switch the default is so we can test current clients of geis without having to recompile them. And, it would be switchable merely by running or killing the geis server. I will probably run the tools/ server by default in my installs just so we have some good testing.

So you're suggesting autodiscovery with fallback. OK, I can do that.
Would like that as part of this merge or should we open a bug to track
that work?

Note that clients would not need any kind of recompile regardless.

>> The only known functional deficit is proper reconnection
>> from the client when the server has disconnected and then reconnected
>> again. After verbal discussions we decided to defer this functionality
>> to later in the interest of getting the client-server merge completed.
>
> Ok, that's reasonable for now. If we merge the branch like this, we should open a bug to track this missing functionality.

Absolutely.

lp://staging/geis/client-arch updated
197. By Stephen M. Webb

Added a command-line switch to select a back end in geisview.

198. By Stephen M. Webb

Added back-end autodiscovery and failover.

The default back end is now DBus, with a fallback to XCB if the DBus server is not detected.

199. By Stephen M. Webb

Added full support for filtering by gesture class name with DBus server back end.

200. By Stephen M. Webb

Fixed a couple of invalid deallocations on exit.

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches

to all changes: