Hi Brian,

The globals wouldn’t be so bad.  It’s the EDA_TEXT’s m_Text field that’s the 
biggest issue.  Protecting that would mean no longer returning a reference from 
GetText().  But that might not be so terrible….

FWIW, Kicad does use wchar_t everywhere it fetches or sets a wxString.  It’s 
just the internal encoding of wxString that’s UTF-8.  (Switching mostly just 
means a compile flag — but I agree it’s bound to turn up some bugs.)

Cheers,
Jeff.


> On 3 Apr 2019, at 15:05, Brian <[email protected]> wrote:
> 
> My $0.02: Is shifting the whole of kicad to wchar_t (along with all the 
> necessary conversions to/from multibyte for IO) easier than wrapping some 
> globals inside locks for thread-safety?  Having dealt with an application 
> that uses ASCII, UTF-16, and UTF-8 in various contexts (my day job), I can 
> say honestly that it’s a bit of a pain in the neck. What would break if these 
> global strings were protected by FCFS locks?
> 
> -Brian
> 
>> On Apr 3, 2019, at 9:35 AM, Jeff Young <[email protected]> wrote:
>> 
>> Jon is currently fighting another wxString multi-threading issue.  Having 
>> done quite a few of these myself, I feel for him.
>> 
>> A lot of them were threaded accesses to globals, so it was easy enough to 
>> make the globals std::strings.  However, this one is EDA_TEXT’s m_Text 
>> field.  That’s going to be a pretty big change to move to std::string.  And 
>> it’s nearly impossible to compartmentalise because returning a const& isn’t 
>> really const (iterating over the string will modify the linked-list of 
>> iterators, which is where the trouble comes in).
>> 
>> What about moving Kicad to UTF16 internally?  (The linked list of iterators 
>> is a performance optimisation specifically for UTF8 builds.)
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : [email protected]
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp


_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to