Show
Ignore:
Timestamp:
12/31/09 23:58:12 (4 years ago)
Author:
saturday06
Message:

isisiisiisisisisiisisisisisisisisisisisisisisosiosoisoisoisio

Location:
lang/objective-cplusplus/i3/trunk/src
Files:
13 modified

Legend:

Unmodified
Added
Removed
  • lang/objective-cplusplus/i3/trunk/src/CompletionWindow.h

    r36033 r36327  
    1313            public CompletionWindowPlatform<CompletionWindow> { 
    1414public: 
     15 
    1516    Mediator& mediator; 
    1617 
  • lang/objective-cplusplus/i3/trunk/src/InputWindow.cpp

    r35976 r36327  
    1515} 
    1616 
     17void InputWindow::read(std::vector<TCHAR>& data) { 
     18    input_cache.read(data); 
    1719} 
    1820 
    1921 
     22} 
     23 
     24 
  • lang/objective-cplusplus/i3/trunk/src/InputWindow.h

    r36033 r36327  
    1111 
    1212class InputWindow : public InputWindowPlatform<InputWindow> { 
     13    template <class Target>  
     14        friend void mil::ModuleExecuteProxy::execute_exit_event(Target& target); 
     15 
     16    template <class EventData, class Target> 
     17        friend void mil::ModuleExecuteProxy::execute_event(EventData& data, Target& target); 
     18 
     19        friend class InputWindowPlatform<InputWindow>; 
    1320public: 
    14     Mediator& mediator; 
    1521 
    1622    InputWindow(Mediator& mediator); 
    1723    ~InputWindow(); 
    18     mil::DoubleBuffer<std::vector<TCHAR> > input_cache; 
    1924 
     25        void read(std::vector<TCHAR>& data); 
     26 
     27private: 
     28    Mediator& mediator; 
    2029    template <typename T> void execute(T& event); 
    2130    template <typename T> void beforeExecute(T& event) {} 
    2231    template <typename T> void afterExecute(T& event) {} 
    23  
     32    mil::DoubleBuffer<std::vector<TCHAR> > input_cache; 
    2433    std::vector<TCHAR> local_input_cache; 
    2534 
    26 protected: 
    2735}; 
    2836 
  • lang/objective-cplusplus/i3/trunk/src/Tester.cpp

    r36273 r36327  
    4949        sleep(5); 
    5050 
    51     while (!breakLoopRequest) { 
     51    while (!break_loop_request) { 
    5252        this->execute_front(); 
    5353        mil::yield(); 
  • lang/objective-cplusplus/i3/trunk/src/gui-windows/CompletionWindowPlatform.cpp

    r36246 r36327  
    2222template <> 
    2323void CompletionWindowPlatform<CompletionWindow>::createUI() { 
    24     if (hLocalWnd) { 
     24    if (local_window) { 
    2525        return; 
    2626    } 
     
    7070                    dwDefaultStyle, 
    7171                    30, //CW_USEDEFAULT, 
    72                     30, //CW_USEDEFAULT, 
     72                    80, //CW_USEDEFAULT, 
    7373                    DEFAULT_WINDOW_WIDTH, 
    7474                    DEFAULT_WINDOW_HEIGHT, 
     
    9191void CompletionWindowPlatform<CompletionWindow>::run() { 
    9292    createUI(); 
    93     UpdateWindow(hLocalWnd); 
    94     ShowWindow(hLocalWnd, SW_SHOW); 
     93    UpdateWindow(local_window); 
     94    ShowWindow(local_window, SW_SHOW); 
    9595    loop(); 
    9696} 
  • lang/objective-cplusplus/i3/trunk/src/gui-windows/InputWindowPlatform.cpp

    r36274 r36327  
    8080template <> 
    8181void InputWindow::execute(LazyEditFocusEvent&) { 
    82     SetFocus(hEdit); 
     82    SetFocus(edit); 
    8383} 
    8484 
     
    9292I3_EVENT_HANDLER(Delegate, EditChangedEvent) { 
    9393    //MessageBox(NULL, data, data, MB_OK); 
    94     HICON new_icon = NULL; 
    9594 
    9695    //TCHAR data[STACKABLE_MAX_PATH] = {}; 
    97     ///int result = GetWindowText(e.hEdit, data, _countof(data)); 
     96    ///int result = GetWindowText(e.edit, data, _countof(data)); 
    9897    std::vector<TCHAR> data; 
    99     getChild().mediator.getInputWindow().input_cache.read(data); 
    100  
    101     if (data[0]) { 
    102         SHFILEINFO sfi = {}; 
    103         DWORD_PTR dwptr = SHGetFileInfo(&data[0], 0, &sfi, 
    104                                         sizeof(sfi), SHGFI_ICON | SHGFI_SMALLICON /* | SHGFI_ADDOVERLAYS */ ); 
    105  
    106         if (dwptr) { // ok 
    107             new_icon = sfi.hIcon; 
    108         } 
     98    getChild().mediator.getInputWindow().read(data); 
     99 
     100    if (!data[0]) { 
     101                return; 
     102        } 
     103 
     104        HICON new_icon = NULL; 
     105 
     106    SHFILEINFO sfi = {}; 
     107    DWORD_PTR dwptr = SHGetFileInfo(&data[0], 0, &sfi, 
     108               sizeof(sfi), SHGFI_ICON | SHGFI_SMALLICON /* | SHGFI_ADDOVERLAYS */ ); 
     109    if (dwptr) { // ok 
     110        new_icon = sfi.hIcon; 
    109111    } 
    110112 
    111113    BOOST_STATIC_ASSERT(sizeof(HICON) == sizeof(DWORD_PTR)); 
    112     HICON old = getChild().mediator.getInputWindow().hSharedIcon.exchange(new_icon); 
     114 
     115    HICON old = getChild().mediator.getInputWindow().icon.exchange(new_icon); 
    113116    if (old) { 
    114117        DestroyIcon(old); 
    115118    } 
    116119    HWND hWnd = getChild().mediator.getInputWindow().getWindow(); 
    117     RECT r = {0, 0, 20, 20}; 
    118     RedrawWindow(hWnd, &r, NULL, RDW_INTERNALPAINT); // should rewrite using postmessage 
    119     //InvalidateRect(hWnd, &r, TRUE); 
    120     //UpdateWindow(hWnd); 
     120    RECT r = {0, 0, 30, 30}; 
     121    //RedrawWindow(hWnd, &r, NULL, RDW_INTERNALPAINT); // should rewrite using postmessage 
     122    InvalidateRect(hWnd, &r, TRUE); 
     123    UpdateWindow(hWnd); 
    121124} 
    122125 
    123126template <> 
    124127InputWindowPlatform<InputWindow>::InputWindowPlatform() : 
    125         //hSharedEdit(NULL), 
    126         hSharedIcon(NULL), 
    127         hEdit(NULL), 
     128        icon(NULL), 
     129        edit(NULL), 
    128130        riched20_dll(NULL) { 
    129131    memset((void*)&layout, 0, sizeof(layout)); 
    130132    memset((void*)&ce, 0, sizeof(ce)); 
     133        memset((void*)&notify_icon, 0, sizeof(notify_icon)); 
    131134    is_dwm_extend_frame_into_client_area = 0; 
    132135    layout.icon_edit_space = 1; 
     
    138141    layout.margin_left = 1; 
    139142#endif 
    140     icon = LoadIcon(i3::hInstance, _T("IDI_ICON1")); 
     143    local_icon = LoadIcon(i3::hInstance, _T("IDI_ICON1")); 
     144        icon.store(LoadIcon(i3::hInstance, _T("IDI_ICON1"))); 
    141145} 
    142146 
     
    192196    ReleaseCapture(); 
    193197    ce.is_capturing = 0; 
    194     SetFocus(hEdit); 
     198    SetFocus(edit); 
    195199    SetMsgHandled(false); 
    196200} 
     
    210214template <> 
    211215void InputWindowPlatform<InputWindow>::OnLButtonUp(HWND hWnd, int x, int y, UINT keyFlags) { 
    212     SetFocus(hEdit); 
     216    SetFocus(edit); 
    213217    SetMsgHandled(false); 
    214218} 
     
    242246    int w = layout.nc_width - layout.edit_left - layout.margin_right - layout.margin_left; 
    243247    int h = layout.edit_height; 
    244     SetWindowPos(hEdit, 0, 0, 0, w, h, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOREDRAW | SWP_NOOWNERZORDER | SWP_NOZORDER); 
     248    SetWindowPos(edit, 0, 0, 0, w, h, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOREDRAW | SWP_NOOWNERZORDER | SWP_NOZORDER); 
    245249    SetMsgHandled(false); 
    246250} 
     
    250254    using namespace std; 
    251255 
     256    Shell_NotifyIcon(NIM_DELETE, &notify_icon); 
     257 
    252258    if (!riched20_dll) { 
    253259        return; 
    254260    } 
    255261 
    256     if (!hEdit || !IsWindow(hEdit)) { 
     262    if (!edit || !IsWindow(edit)) { 
    257263        return; 
    258264    } 
    259265 
    260     DestroyWindow(hEdit); 
     266    DestroyWindow(edit); 
    261267    FreeLibrary(riched20_dll); 
    262268} 
     
    264270template <> 
    265271void InputWindowPlatform<InputWindow>::OnClose(HWND hWnd) { 
    266     if (hEdit && IsWindow(hEdit)) { 
     272    if (edit && IsWindow(edit)) { 
    267273        //TCHAR data[100] = {}; 
    268         //GetWindowText(hEdit, data, _countof(data)); 
     274        //GetWindowText(edit, data, _countof(data)); 
    269275        //MessageBox(NULL, data, data, MB_OK); 
    270         DestroyWindow(hEdit); 
    271         hEdit = NULL; 
     276        DestroyWindow(edit); 
     277        edit = NULL; 
    272278    } 
    273279    destroy(); 
     
    276282template <> 
    277283void InputWindowPlatform<InputWindow>::OnDestroy(HWND hWnd) { 
    278     if (IsWindow(hEdit)) { 
     284    if (IsWindow(edit)) { 
    279285        DebugBreak(); 
    280         DestroyWindow(hEdit); 
    281         hEdit = NULL; 
     286        DestroyWindow(edit); 
     287        edit = NULL; 
    282288    } 
    283289    PostQuitMessage(0); 
     
    286292template <> 
    287293void InputWindowPlatform<InputWindow>::OnCommand(HWND hWnd, int id, HWND hWndCtl, UINT codeNotify) { 
    288     if (hWndCtl == hEdit) { 
     294    if (hWndCtl == edit) { 
    289295        switch (codeNotify) { 
    290296        case EN_CHANGE: { 
    291             //GetWindowText(e.hEdit, prog, _countof(prog)); 
     297            //GetWindowText(e.edit, prog, _countof(prog)); 
    292298            size_t size_to_copy = 0; 
    293299            std::vector<TCHAR>& local_input_cache = getChild().local_input_cache; 
     
    322328                // 
    323329                local_input_cache.resize(local_input_cache.capacity()); 
    324                 int result = GetWindowText(hEdit, &local_input_cache[0], local_input_cache.size()); 
     330                int result = GetWindowText(edit, &local_input_cache[0], local_input_cache.size()); 
    325331                if (!result) { 
    326332                    size_to_copy = 1; 
     
    335341                } 
    336342 
    337                 int length = GetWindowTextLength(hEdit); 
     343                int length = GetWindowTextLength(edit); 
    338344                size_t new_length = static_cast<size_t>(length * 1.2 + 10); 
    339345                if (!length || new_length < local_input_cache.size()) { 
     
    372378template <> 
    373379void InputWindowPlatform<InputWindow>::OnNotify(HWND hWnd, int idCtrl, LPNMHDR pnmh) { 
    374     if (pnmh->hwndFrom != hEdit) { 
     380    if (pnmh->hwndFrom != edit) { 
    375381        SetMsgHandled(false); 
    376382        return; 
     
    393399                memcpy(e.command, ptr, bytes); 
    394400                getChild().mediator.getDelegate().post(e, *this); 
    395                 SetWindowText(hEdit, _T("")); 
     401                SetWindowText(edit, _T("")); 
    396402            } 
    397403        } 
     
    421427    //DeleteObject(hBrushYellow);                         // �u���V��� 
    422428 
    423     HICON hMyIcon = hSharedIcon.load(); 
    424     if (!hMyIcon) { 
    425         TCHAR data[MAX_PATH] = {}; 
    426         //int result = GetWindowText(hEdit, data, _countof(data)); 
    427         //if (!result) { 
    428         //    hMyIcon = icon; 
    429         //} 
    430     } 
    431     //DrawIcon(hdc , 2 , 2 , hMyIcon); 
    432     //DrawIconEx (hdc, 2, 2, hMyIcon, 0, 0, 0, NULL, DI_NORMAL | DI_COMPAT | DI_DEFAULTSIZE); 
    433     if (hMyIcon) { 
     429    HICON paint_icon = icon.load(); 
     430        if (!paint_icon) { 
     431                paint_icon = local_icon; 
     432        } 
     433    if (paint_icon) { 
    434434        int left = ((layout.edit_left - layout.icon_edit_space) - ICON_SIZE) / 2 + layout.margin_left; 
    435435        int top = (layout.nc_height - ICON_SIZE) / 2 + layout.margin_top - /* XXX margin ?? */ 1; 
    436         DrawIconEx(hdc, left, top, hMyIcon, ICON_SIZE, ICON_SIZE, 0, NULL, DI_NORMAL /*| DI_COMPAT*/); 
    437     } 
     436        DrawIconEx(hdc, left, top, paint_icon, ICON_SIZE, ICON_SIZE, 0, NULL, DI_NORMAL /*| DI_COMPAT*/); 
     437    } 
     438 
    438439    EndPaint(hWnd, &ps); 
    439440    SetMsgHandled(false); 
     
    446447    //SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &NCMetrics, 0); 
    447448 
    448     //DWORD dwStyle = (DWORD)GetWindowLongPtr(hEdit, GWL_STYLE); 
    449     //DWORD dwExStyle = (DWORD)GetWindowLongPtr(hEdit, GWL_EXSTYLE); 
     449    //DWORD dwStyle = (DWORD)GetWindowLongPtr(edit, GWL_STYLE); 
     450    //DWORD dwExStyle = (DWORD)GetWindowLongPtr(edit, GWL_EXSTYLE); 
    450451 
    451452    //int cyborder = GetSystemMetrics(SM_CYBORDER); 
     
    486487template <> 
    487488void InputWindowPlatform<InputWindow>::createUI() { 
    488     if (hLocalWnd) { 
     489    if (local_window) { 
    489490                debug << "createUI re-called"; 
    490                 if (!IsWindow(hLocalWnd)) { 
    491                         debug << "hLocalWnd is not window"; 
     491                if (!IsWindow(local_window)) { 
     492                        debug << "local_window is not window"; 
    492493                } 
    493494        return; 
     
    604605 
    605606#else 
    606     font = (HFONT)SendMessage(hEdit, WM_GETFONT, NULL, NULL); 
     607    font = (HFONT)SendMessage(edit, WM_GETFONT, NULL, NULL); 
    607608    if (!font) { 
    608609        font = (HFONT)GetStockObject(SYSTEM_FONT); 
     
    703704 
    704705                DWORD color2 = (a << 24) | (b << 16) | (g << 8) | r ; 
    705                 //SendMessage(hEdit, EM_SETBKGNDCOLOR, (WPARAM)0, (LPARAM)(color2)); 
     706                //SendMessage(edit, EM_SETBKGNDCOLOR, (WPARAM)0, (LPARAM)(color2)); 
    706707                //printf(""); 
    707708            } 
     
    716717    int x = layout.margin_left + layout.edit_left; 
    717718    int y = (layout.nc_height - layout.edit_height) / 2; 
    718     hEdit = CreateWindowEx( 
     719    edit = CreateWindowEx( 
    719720                richedit_exstyle, 
    720721                name, 
     
    732733                NULL 
    733734            ); 
    734     SendMessage(hEdit, WM_SETFONT, (WPARAM)font, (LPARAM)FALSE); 
     735    SendMessage(edit, WM_SETFONT, (WPARAM)font, (LPARAM)FALSE); 
    735736#ifndef _WIN32_WCE 
    736     LRESULT dwEvent = SendMessage(hEdit, EM_GETEVENTMASK, 0, 0); 
     737    LRESULT dwEvent = SendMessage(edit, EM_GETEVENTMASK, 0, 0); 
    737738    dwEvent |= ENM_MOUSEEVENTS | ENM_KEYEVENTS | ENM_CHANGE; 
    738     SendMessage(hEdit, EM_SETEVENTMASK, 0, (LPARAM)dwEvent); 
     739    SendMessage(edit, EM_SETEVENTMASK, 0, (LPARAM)dwEvent); 
    739740#endif 
    740741 
     
    744745    // �^�X�N�g���C�p�̃A�C�R���̍쐬 
    745746    // 
    746     NOTIFYICONDATA connectingIcon = {}; 
    747     connectingIcon.cbSize = sizeof(connectingIcon); 
    748     connectingIcon.hIcon = icon; 
    749     connectingIcon.hWnd = hWnd; 
    750     connectingIcon.uCallbackMessage = WM_USER + 10; 
    751     connectingIcon.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; 
    752     _tcscpy_s(connectingIcon.szTip, _T("")); 
    753     Shell_NotifyIcon(NIM_ADD, &connectingIcon); 
     747    notify_icon.cbSize = sizeof(notify_icon); 
     748    notify_icon.hIcon = local_icon; 
     749    notify_icon.hWnd = hWnd; 
     750    notify_icon.uCallbackMessage = WM_USER + 10; 
     751    notify_icon.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; 
     752    _tcscpy_s(notify_icon.szTip, _T("")); 
     753    Shell_NotifyIcon(NIM_ADD, &notify_icon); 
    754754 
    755755    // ------------------------------------------------------------- 
    756756    // �E�B���h�E����ƗL��    // 
    757     //UpdateWindow(hEdit); 
    758     SetFocus(hEdit); 
     757    //UpdateWindow(edit); 
     758    SetFocus(edit); 
    759759    setWindow(hWnd); 
    760     //hSharedEdit.store(hEdit); 
     760    //hSharedEdit.store(edit); 
    761761    //InvalidateRect(hWnd, NULL, FALSE); 
    762762} 
     
    765765void InputWindowPlatform<InputWindow>::run() { 
    766766    createUI(); 
    767     UpdateWindow(hLocalWnd); 
    768     ShowWindow(hLocalWnd, SW_SHOW); 
     767    UpdateWindow(local_window); 
     768    ShowWindow(local_window, SW_SHOW); 
    769769    loop(); 
    770770} 
     
    772772template <> 
    773773void InputWindowPlatform<InputWindow>::focus() { 
    774         SetForegroundWindow(hLocalWnd); 
    775         SetFocus(hEdit); 
    776 } 
    777  
    778 } 
     774        SetForegroundWindow(local_window); 
     775        SetFocus(edit); 
     776} 
     777 
     778} 
  • lang/objective-cplusplus/i3/trunk/src/gui-windows/InputWindowPlatform.h

    r36256 r36327  
    1313            public mil::GuiModule<InputWindowPlatform<Child> > { 
    1414public: 
     15        friend class ModuleExecuteProxy; 
    1516        friend class mil::GuiModule<InputWindowPlatform<Child> >; 
    1617    MIL_CRTP_CLASS_MEMBERS; 
     
    2122    void createUI(); 
    2223    void run(); 
    23     mil::atomic<HICON> hSharedIcon; 
     24    mil::atomic<HICON> icon; 
    2425 
    2526protected: 
    2627        void focus(); 
    27     HWND hEdit; 
    28     HICON icon; 
     28    HWND edit; 
     29    HICON local_icon; 
    2930    HMODULE riched20_dll; 
    3031    size_t getEditVerticalMargin(); 
     32        NOTIFYICONDATA notify_icon; 
    3133 
    3234    void OnActivate(HWND hWnd, UINT state, HWND hWndActDeact, BOOL fMinimized); 
  • lang/objective-cplusplus/i3/trunk/src/gui-windows/OutputWindowPlatform.cpp

    r36246 r36327  
    2222template <> 
    2323void OutputWindowPlatform<OutputWindow>::createUI() { 
    24     if (hLocalWnd) { 
     24    if (local_window) { 
    2525        return; 
    2626    } 
     
    7070                    dwDefaultStyle, 
    7171                    30, //CW_USEDEFAULT, 
    72                     30, //CW_USEDEFAULT, 
     72                    90, //CW_USEDEFAULT, 
    7373                    DEFAULT_WINDOW_WIDTH, 
    7474                    DEFAULT_WINDOW_HEIGHT, 
     
    9191void OutputWindowPlatform<OutputWindow>::run() { 
    9292    createUI(); 
    93     UpdateWindow(hLocalWnd); 
    94     ShowWindow(hLocalWnd, SW_SHOW); 
     93    UpdateWindow(local_window); 
     94    ShowWindow(local_window, SW_SHOW); 
    9595    loop(); 
    9696} 
  • lang/objective-cplusplus/i3/trunk/src/mil/include/mil/Module.h

    r36130 r36327  
    8888    bool repost; 
    8989protected: 
    90     bool breakLoopRequest; 
     90    bool break_loop_request; 
    9191 
    9292public: 
     
    9797#endif 
    9898 
    99     Module() : repost(false), breakLoopRequest(false) { 
     99    Module() : repost(false), break_loop_request(false) { 
    100100    } 
    101101 
     
    154154public: 
    155155    void destroy() { 
    156         breakLoopRequest = true; 
     156        break_loop_request = true; 
    157157    } 
    158158 
     
    179179protected: 
    180180    void loop() { 
    181         if (breakLoopRequest) { 
     181        if (break_loop_request) { 
    182182            halt << "loop() re-called"; 
    183183        } 
    184         while (!breakLoopRequest) { 
     184        while (!break_loop_request) { 
    185185            if (!execute_front()) { 
    186186                semaphore.verhoog(); 
  • lang/objective-cplusplus/i3/trunk/src/mil/include/mil/ModuleCommon.h

    r36317 r36327  
    4242 
    4343struct ModuleExecuteProxy { 
     44    template <class Target> 
     45        static void execute_exit_event(Target& target) { 
     46        MIL_MODULE_SUPER_CHILD_TYPE(Target)& o = MIL_MODULE_GET_SUPER_CHILD(target); 
     47                o.destroy(); 
     48        } 
     49 
     50    template <class EventData, class Target> 
     51        static void execute_event(EventData& data, Target& target) { 
     52        MIL_MODULE_SUPER_CHILD_TYPE(Target)& o = MIL_MODULE_GET_SUPER_CHILD(target); 
     53        o.execute_hook(data); 
     54        o.execute(data); 
     55        } 
     56 
    4457    template <class EventData, class Target> 
    4558    static void execute_body(EventData& data, Target& target, typename EventData::IsReturnMemoryEvent) { 
     
    5063    static void execute_body(EventData& data, Target& target, typename EventData::IsExitEvent) { 
    5164                (void)data; 
    52  
    53         MIL_MODULE_SUPER_CHILD_TYPE(Target)& o = 
    54             MIL_MODULE_GET_SUPER_CHILD(target); 
    55         o.destroy(); 
     65                execute_exit_event<Target>(target); 
    5666    } 
    5767 
    5868    template <class EventData, class Target> 
    5969    static void execute_body(EventData& data, Target& target, ...) { 
    60         MIL_MODULE_SUPER_CHILD_TYPE(Target)& o = 
    61             MIL_MODULE_GET_SUPER_CHILD(target); 
    62          
    63         o.execute_hook(data); 
    64         o.execute(data); 
     70                execute_event<EventData, Target>(data, target); 
    6571    } 
    6672 
  • lang/objective-cplusplus/i3/trunk/src/mil/include/mil/Thread.h

    r36315 r36327  
    160160 
    161161    void clean() { 
    162                 assert(hThread); 
    163         CloseHandle(hThread); 
     162 
     163                if (hThread) { 
     164                CloseHandle(hThread); 
     165                } else { 
     166                        debug << "Thread is not started"; 
     167                } 
    164168                hThread = NULL; 
    165169    } 
  • lang/objective-cplusplus/i3/trunk/src/mil/include/mil/gui-windows/GuiModule.h

    r36221 r36327  
    3333    }; 
    3434 
    35     atomic<HWND> hSharedWnd; 
    36  
    37     //LONG_PTR breakLoopRequest; 
    38     bool breakLoopRequest; 
    39     atomic<bool> breakLoopRequestShared; 
     35    atomic<HWND> window; 
     36 
     37    //LONG_PTR break_loop_request; 
     38    bool break_loop_request; 
     39    atomic<bool> break_loop_request_shared; 
    4040 
    4141    bool repost; 
     
    4444 
    4545protected: 
    46     HWND hLocalWnd; 
     46    HWND local_window; 
    4747 
    4848public: 
    4949    GuiModule() : 
    50             hSharedWnd(NULL), 
    51             breakLoopRequest(false), 
    52             breakLoopRequestShared(false), 
     50            window(NULL), 
     51            break_loop_request(false), 
     52            break_loop_request_shared(false), 
    5353            repost(false), 
    5454            handled(true), 
    5555            handled_result(0), 
    56             hLocalWnd(NULL), 
     56            local_window(NULL), 
    5757            wndproc(getChild()) { 
    5858    } 
    5959 
    6060    void requestExit(void* event_memory) { 
    61         breakLoopRequestShared.store(true); 
     61        break_loop_request_shared.store(true); 
    6262        exitNotifier.tls.flush(); 
    6363        ExitEvent e; 
     
    9292            memcpy(&l, &data, sizeof(l)); 
    9393            void (*func)(void*, void*) = dispatch<Data, Child>; 
    94             PostMessage(target.hLocalWnd /* write operation should be done */ , WM_MIL_GUIMODULE, 
     94            PostMessage(target.local_window /* write operation should be done */ , WM_MIL_GUIMODULE, 
    9595                        reinterpret_cast<WPARAM>(func), l); 
    9696            return; 
     
    101101        if (target.repost) { 
    102102            void (*func)(void*, void*) = dispatch<Data, Child>; 
    103             PostMessage(target.hLocalWnd /* write operation should be done */ , WM_MIL_GUIMODULE, 
     103            PostMessage(target.local_window /* write operation should be done */ , WM_MIL_GUIMODULE, 
    104104                        reinterpret_cast<WPARAM>(func) , 
    105105                        reinterpret_cast<LPARAM>(&event)); 
     
    112112protected: 
    113113    void setWindow(HWND hWnd_) { 
    114         hLocalWnd = hWnd_; 
    115         hSharedWnd.store(hWnd_); 
     114        local_window = hWnd_; 
     115        window.store(hWnd_); 
    116116        wndproc.set(hWnd_); 
    117117    } 
     
    119119public: 
    120120    HWND getWindow() { 
    121         return hSharedWnd.load(); 
     121        return window.load(); 
    122122    } 
    123123 
    124124    void destroy() { //XXX thread safe 
    125125        //PostQuitMessage(0); 
    126         breakLoopRequest = true; 
    127         breakLoopRequestShared.store(true); 
     126        break_loop_request = true; 
     127        break_loop_request_shared.store(true); 
    128128 
    129129        // DestroyWindow -> dtor 
    130130 
    131         //if (IsWindow(hLocalWnd)) 
     131        //if (IsWindow(local_window)) 
    132132        //{ 
    133         //    if (DestroyWindow(hLocalWnd) == 0) 
     133        //    if (DestroyWindow(local_window) == 0) 
    134134        //    { 
    135135        //        // error 
     
    149149 
    150150    void loop() { 
    151         if (breakLoopRequest || breakLoopRequestShared.load() || !IsWindow(this->hLocalWnd)) { 
    152             return; 
    153         } 
    154  
    155                 assert(GetWindowThreadProcessId(this->hLocalWnd, NULL) == GetCurrentThreadId()); 
     151        if (break_loop_request || break_loop_request_shared.load() || !IsWindow(this->local_window)) { 
     152            return; 
     153        } 
     154 
     155                assert(GetWindowThreadProcessId(this->local_window, NULL) == GetCurrentThreadId()); 
    156156                 
    157157        MSG msg = {}; 
    158         //while (__builtin_expect(!breakLoopRequest, true)) 
    159         while (!breakLoopRequest) { 
     158        //while (__builtin_expect(!break_loop_request, true)) 
     159        while (!break_loop_request) { 
    160160            BOOL result = GetMessage(&msg, NULL, 0, 0); 
    161161            if (!result) { 
  • lang/objective-cplusplus/i3/trunk/src/mil/include/mil/gui-windows/WindowProcedureRedirector.h

    r36013 r36327  
    118118namespace mil { 
    119119template <typename T, LRESULT (T::* WindowProcedure)(HWND, UINT, WPARAM, LPARAM)> 
    120 class WindowProcedureRedirector { 
     120class WindowProcedureRedirector : public boost::noncopyable { 
    121121public: 
    122122    static Serial serial;