1 /*
2 * Copyright (c) 2014, 2015, Oracle and/or its affiliates.
3 * All rights reserved. Use is subject to license terms.
4 *
5 * This file is available and licensed under the following license:
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * - Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * - Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the distribution.
16 * - Neither the name of Oracle Corporation nor the names of its
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33
34 #include "Platform.h"
35
36 #ifdef LINUX
37
38 #ifndef LINUXPLATFORM_H
39 #define LINUXPLATFORM_H
40
41 #include "PosixPlatform.h"
42 #include "GenericPlatform.h"
43 #include "JavaUserPreferences.h"
44
45 #include <pthread.h>
46
47
48 #pragma warning( push )
49 #pragma warning( disable : 4250 ) // C4250 - 'class1' : inherits 'class2::member'
50 class LinuxPlatform : virtual public Platform, GenericPlatform, PosixPlatform
51 {
52 private:
53 pthread_t FMainThread;
54
55 public:
56 LinuxPlatform(void);
57 virtual ~LinuxPlatform(void);
58
59 virtual void ShowMessage(TString title, TString description);
60 virtual void ShowMessage(TString description);
61
62 virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release);
63 virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release);
64
65 virtual void SetCurrentDirectory(TString Value);
66 virtual TString GetPackageRootDirectory();
67 virtual TString GetAppDataDirectory();
68
69 virtual TString GetModuleFileName();
70
71 virtual TString GetBundledJVMLibraryFileName(TString RuntimePath);
72 virtual TString GetSystemJVMLibraryFileName();
73 virtual TString GetSystemJRE();
74
75 virtual ISectionalPropertyContainer* GetConfigFile(TString FileName);
76
77 virtual bool IsMainThread();
78 virtual TPlatformNumber GetMemorySize();
79
80 #ifdef DEBUG
81 virtual bool IsNativeDebuggerPresent();
82 virtual int GetProcessID();
83 #endif //DEBUG
84 };
85 #pragma warning( pop ) // C4250
86
87
88 class LinuxJavaUserPreferences : public JavaUserPreferences {
89 private:
90 TString GetUserPrefFileName(TString Appid);
91
92 public:
93 LinuxJavaUserPreferences(void);
94 ~LinuxJavaUserPreferences(void);
95
96 virtual bool Load(TString Appid);
97 };
98
99 #endif //LINUXPLATFORM_H
100
101 #endif //LINUX
|
1 /*
2 * Copyright (c) 2014, 2017, Oracle and/or its affiliates.
3 * All rights reserved. Use is subject to license terms.
4 *
5 * This file is available and licensed under the following license:
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * - Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * - Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the distribution.
16 * - Neither the name of Oracle Corporation nor the names of its
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33
34 #include "Platform.h"
35
36 #ifdef LINUX
37
38 #ifndef LINUXPLATFORM_H
39 #define LINUXPLATFORM_H
40
41 #include "PosixPlatform.h"
42 #include "GenericPlatform.h"
43 #include "JavaUserPreferences.h"
44 #include <X11/Xlib.h>
45 #include <X11/Xatom.h>
46 #include <pthread.h>
47 #include <list>
48
49
50 #pragma warning( push )
51 #pragma warning( disable : 4250 ) // C4250 - 'class1' : inherits 'class2::member'
52 class LinuxPlatform : virtual public Platform, GenericPlatform, PosixPlatform
53 {
54 private:
55 pthread_t FMainThread;
56
57 protected:
58 virtual const char* getTmpDirString();
59
60 public:
61 LinuxPlatform(void);
62 virtual ~LinuxPlatform(void);
63
64 virtual void ShowMessage(TString title, TString description);
65 virtual void ShowMessage(TString description);
66
67 virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release);
68 virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release);
69
70 virtual void SetCurrentDirectory(TString Value);
71 virtual TString GetPackageRootDirectory();
72 virtual TString GetAppDataDirectory();
73
74 virtual TString GetModuleFileName();
75
76 virtual TString GetBundledJVMLibraryFileName(TString RuntimePath);
77 virtual TString GetSystemJVMLibraryFileName();
78 virtual TString GetSystemJRE();
79
80 virtual ISectionalPropertyContainer* GetConfigFile(TString FileName);
81
82 virtual void reactivateAnotherInstance();
83 virtual bool IsMainThread();
84 virtual TPlatformNumber GetMemorySize();
85
86 #ifdef DEBUG
87 virtual bool IsNativeDebuggerPresent();
88 virtual int GetProcessID();
89 #endif //DEBUG
90 };
91 #pragma warning( pop ) // C4250
92
93
94 class LinuxJavaUserPreferences : public JavaUserPreferences {
95 private:
96 TString GetUserPrefFileName(TString Appid);
97
98 public:
99 LinuxJavaUserPreferences(void);
100 ~LinuxJavaUserPreferences(void);
101
102 virtual bool Load(TString Appid);
103 };
104
105 class ProcessReactivator {
106 private:
107 void searchWindowHelper(Window w);
108
109 pid_t _pid;
110 Atom _atomPid;
111 Display* _display;
112 std::list<Window> _result;
113 public:
114 ProcessReactivator(Display *display, pid_t pid);
115
116 void reactivateProcess();
117 };
118
119 #endif //LINUXPLATFORM_H
120
121 #endif //LINUX
|