Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion org.eclipse.wb.os.linux/.classpath
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-24"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
Expand Down
6 changes: 3 additions & 3 deletions org.eclipse.wb.os.linux/.settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
org.eclipse.jdt.core.compiler.codegen.targetPlatform=24
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=21
org.eclipse.jdt.core.compiler.compliance=24
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
Expand Down Expand Up @@ -65,7 +65,7 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disa
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=21
org.eclipse.jdt.core.compiler.source=24
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line=true
Expand Down
2 changes: 1 addition & 1 deletion org.eclipse.wb.os.linux/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.wb.os.linux;singleton:=true
Bundle-Version: 1.10.200.qualifier
Bundle-Vendor: %providerName
Bundle-RequiredExecutionEnvironment: JavaSE-21
Bundle-RequiredExecutionEnvironment: JavaSE-24
Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux))
Require-Bundle: org.eclipse.swt;bundle-version="[3.126.0,4.0.0)",
org.eclipse.core.runtime;bundle-version="[3.31.100,4.0.0)",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*******************************************************************************
* Copyright (c) 2025 Patrick Ziegler and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Patrick Ziegler - initial API and implementation
*******************************************************************************/
package org.eclipse.wb.internal.os.linux.gtk3;

import java.lang.foreign.Arena;
import java.lang.foreign.FunctionDescriptor;
import java.lang.foreign.Linker;
import java.lang.foreign.MemorySegment;
import java.lang.foreign.SymbolLookup;
import java.lang.foreign.ValueLayout;
import java.lang.invoke.MethodHandle;

public final class GTK3 {
private static class InstanceHolder {
private static final Linker linker = Linker.nativeLinker();
private static final SymbolLookup gtk = SymbolLookup.libraryLookup("libgtk-3.so", Arena.ofAuto());

private static MethodHandle createHandle(String name, FunctionDescriptor descriptor) {
MemorySegment symbol = gtk.find(name).orElseThrow(UnsatisfiedLinkError::new);
return InstanceHolder.linker.downcallHandle(symbol, descriptor);
}

static final MethodHandle gtk_get_major_version = createHandle("gtk_get_major_version",
FunctionDescriptor.of(ValueLayout.JAVA_INT));

static final MethodHandle gtk_get_minor_version = createHandle("gtk_get_minor_version",
FunctionDescriptor.of(ValueLayout.JAVA_INT));

static final MethodHandle gtk_get_micro_version = createHandle("gtk_get_micro_version",
FunctionDescriptor.of(ValueLayout.JAVA_INT));
}

public static int gtk_get_major_version() throws Throwable {
return (int) InstanceHolder.gtk_get_major_version.invoke();
}

public static int gtk_get_minor_version() throws Throwable {
return (int) InstanceHolder.gtk_get_minor_version.invoke();
}

public static int gtk_get_micro_version() throws Throwable {
return (int) InstanceHolder.gtk_get_micro_version.invoke();
}
}
Loading