← Back to team overview

kicad-developers team mailing list archive

Re: Code execution context

 

As long as the experience is the same on all platforms (Win, Mac, Linux)
and KiCad does not require any proprietary libraries to compile, I think it
is up to Wayne whether or not an optional dependency on a proprietary
library on Windows is acceptable.

But, I would like to hear from Markus on the topic first -- if other
software is successfully using websockets to provide a good interface to
3dconnexion hardware on Windows, maybe it is not as bad as you fear?

-Jon

On Thu, Feb 25, 2021 at 9:38 AM Mark Roszko <mark.roszko@xxxxxxxxx> wrote:

> On another note, I personally am not a fan of websockets usage locally on
> Windows. In corporate environments there's going to be hell with security
> software interfering and in general it's fragile.
>
> I personally would rather just link against the 3dconnexion library
> directly. We have the MSVC builds now, we can compile against MSVC built
> libraries no problem. MSYS2 builds would just remain without it.
>
> But just my opinion on this.
>
> On Thu, Feb 25, 2021 at 9:32 AM Jon Evans <jon@xxxxxxxxxxxxx> wrote:
>
>> That is a good point Mark, we could either have this behind a flag so
>> that it only gets enabled/compiled with new-enough Boost versions, or
>> investigate a different websockets library.
>>
>> I'm not sure the overlap of 3dconnexion users and 18.04 users is large
>> enough to rule that approach out, at least if there are no other issues
>> with Beast.
>>
>> -Jon
>>
>> On Thu, Feb 25, 2021 at 9:23 AM Mark Roszko <mark.roszko@xxxxxxxxx>
>> wrote:
>>
>>> * Boost 1.65 being the version Ubuntu 18.04 LTS currently has and are
>>> committed to support until EOL.
>>>
>>> On Thu, Feb 25, 2021 at 9:19 AM Mark Roszko <mark.roszko@xxxxxxxxx>
>>> wrote:
>>>
>>>> Markus,
>>>>
>>>> We currently require support for a minimum of boost 1.59 due to Linux
>>>> distros lagging behind. boost/beast is not a viable option as beast did not
>>>> appear in boost until 1.66.
>>>>
>>>> From some offhand sounding out we may be able to bump the minimum to
>>>> 1.65 but that doesn't help :/
>>>>
>>>>
>>>> Regards,
>>>> Mark
>>>>
>>>> On Thu, Feb 25, 2021 at 9:00 AM Jon Evans <jon@xxxxxxxxxxxxx> wrote:
>>>>
>>>>> Hello Markus,
>>>>>
>>>>> This is exciting news, as some of our users are also big fans of
>>>>> 3dconnexion products[1]
>>>>>
>>>>> Others have looked in to what it would take in the past, but there
>>>>> were some questions about the need for proprietary drivers on some
>>>>> platforms[2]
>>>>>
>>>>> It sounds like this websocket interface is a new approach that doesn't
>>>>> require any additional libraries for KiCad to link against?
>>>>> Does the hardware use some other daemon process to bridge between the
>>>>> device driver and websockets?
>>>>>
>>>>> As you may know, KiCad uses wxWidgets as a framework, so you probably
>>>>> want to plug in to the wx event loop on the main thread.
>>>>> There are some guidelines on this in their docs[3].
>>>>>
>>>>> You probably want to check out ./common/view/wx_view_controls.cpp to
>>>>> see how existing input events are handled by the 2D canvases.
>>>>> I guess your new code would hook in here somewhere, and provide
>>>>> additional event handlers to manage the data from the 3D device.
>>>>> Your communication thread should be able to post wxWidgets events to
>>>>> the main thread and then we can consume them here.
>>>>>
>>>>> By the way: although the wx docs use wxThread, I think this general
>>>>> concept should work with C++ standard libraries threads just fine.
>>>>> The documentation for wxEvtHandler::QueueEvent may also be useful[4]
>>>>>
>>>>> Hope this helps!
>>>>>
>>>>> Best,
>>>>> Jon
>>>>>
>>>>> [1] https://gitlab.com/kicad/code/kicad/-/issues/4951
>>>>> [2] https://lists.launchpad.net/kicad-developers/msg29464.html
>>>>> [3]
>>>>> https://wiki.wxwidgets.org/Inter-Thread_and_Inter-Process_communication#Sending_events_to_the_main_thread_-_wxWidgets_3_only
>>>>> [4]
>>>>> https://docs.wxwidgets.org/3.0/classwx_evt_handler.html#acffd03bf407a856166ea71ef0318b59a
>>>>>
>>>>>
>>>>> On Thu, Feb 25, 2021 at 1:47 AM Markus Bonk <
>>>>> markus_bonk@xxxxxxxxxxxxxxx> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>>
>>>>>>
>>>>>> I am currently investigating adding support for 3D input devices to
>>>>>> pcbnew. The plan is to use a websocket interface (boost/beast) to
>>>>>> communicate with the 3D device. Effectively the communication runs on an
>>>>>> extra thread. Somewhere the event code will need to switch to executing on
>>>>>> the main thread.
>>>>>>
>>>>>>
>>>>>>
>>>>>> One way of achieving this on say win32 might be to add functors to a
>>>>>> queue post a message to a message window handler in the main thread which
>>>>>> empties the queue and invokes the functor.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Is such a mechanism already in place in KiCAD? What is the KiCAD
>>>>>> recommended solution to the issue?
>>>>>>
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> -Markus
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------
>>>>>>
>>>>>> *Markus Bonk*
>>>>>> Senior Software Engineer
>>>>>>
>>>>>> Clarita-Bernhard-Str. 18
>>>>>> 81249 München
>>>>>> Germany
>>>>>> markus_bonk@xxxxxxxxxxxxxxx <%7BE-mail%7D>
>>>>>> www.3dconnexion.com
>>>>>>
>>>>>> Geschäftsführer: Antonio Pascucci
>>>>>> Sitz der Gesellschaft: München
>>>>>> Registergericht: München HRB 99232
>>>>>>
>>>>>> This email and any files transmitted with are from 3Dconnexion GmbH.
>>>>>> The contents of this email and any attachments are confidential to the
>>>>>> intended recipient. They may not be disclosed to or used by or copied in
>>>>>> any way by anyone other than the intended recipient. If this email is
>>>>>> received in error, please contact 3Dconnexion GmbH by calling +49 89
>>>>>> 8974542-0 and then delete it. Please note that neither 3Dconnexion GmbH nor
>>>>>> the sender accepts any responsibility for viruses and it is your
>>>>>> responsibility to scan or otherwise check this email and any attachments.
>>>>>> Any opinion expressed in this email are those of the individual and not
>>>>>> necessarily those of 3Dconnexion GmbH.
>>>>>> 3Dconnexion GmbH processes and stores for commercial purposes your
>>>>>> personal data, collected upon your consent, in accordance with its privacy
>>>>>> policy available at https://www.3dconnexion.eu/privacy.html, which
>>>>>> has been drafted in accordance with Regulation (EU) no. 679/2016 and all
>>>>>> applicable local data protection laws and regulations of the countries
>>>>>> where the company operates. To revoke your consent or exercise all your
>>>>>> rights with regards to personal data, please contact us at
>>>>>> privacy@xxxxxxxxxxxxxxx.
>>>>>>
>>>>>> _______________________________________________
>>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>
>>>>> _______________________________________________
>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>
>>>>
>>>>
>>>> --
>>>> Mark
>>>>
>>>
>>>
>>> --
>>> Mark
>>>
>>
>
> --
> Mark
>

GIF image


Follow ups

References