Mercurial > sdl-ios-xcode
annotate EXCLUDE/GLTSF/src/TSF.cpp @ 4735:8568ebdb5f1f
Added else to make things clear.
author | dewyatt |
---|---|
date | Wed, 09 Jun 2010 21:36:32 -0400 |
parents | 0c7c67d4e6ee |
children | f51a9f01b508 |
rev | line source |
---|---|
4731 | 1 #include "TSF.hpp" |
4732 | 2 #include <stdexcept> |
3 | |
4734
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
4 bool TSF::COM_Initialized = false; |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
5 CComPtr<ITfThreadMgr> TSF::Thread_Manager; |
4732 | 6 |
7 void TSF::Initialize() | |
8 { | |
4734
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
9 if (!COM_Initialized) |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
10 { |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
11 HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
12 if (S_OK != hr && S_FALSE != hr) |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
13 throw std::runtime_error("Failed to initialize COM"); |
4732 | 14 |
4734
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
15 COM_Initialized = true; |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
16 } |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
17 if (!Thread_Manager) |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
18 { |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
19 if (FAILED(CoCreateInstance(CLSID_TF_ThreadMgr, NULL, CLSCTX_INPROC_SERVER, IID_ITfThreadMgr, reinterpret_cast<void **>(&Thread_Manager)))) |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
20 throw std::runtime_error("Failed to create ITfThreadMgr instance"); |
4732 | 21 |
4734
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
22 TfClientId ClientId; |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
23 if (FAILED(Thread_Manager->Activate(&ClientId))) |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
24 throw std::runtime_error("ITfThreadMgr::Activate failed"); |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
25 } |
4732 | 26 } |
27 | |
28 void TSF::Finalize() | |
29 { | |
4734
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
30 if (Thread_Manager) |
4732 | 31 { |
4734
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
32 Thread_Manager->Deactivate(); |
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
33 Thread_Manager = NULL; |
4732 | 34 } |
4734
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
35 if (COM_Initialized) |
4732 | 36 { |
37 CoUninitialize(); | |
4734
0c7c67d4e6ee
Added On_Char method to Window_Listener for WM_CHAR messages.
dewyatt
parents:
4732
diff
changeset
|
38 COM_Initialized = false; |
4732 | 39 } |
40 } |