Commit graph

61 commits

Author SHA1 Message Date
Sebastien Pouliot
7391aac88d [glib] Fix g_filename_to_utf8 signature for 64 bits platforms 2022-04-22 21:01:12 -04:00
Sebastien Pouliot
75a3c2b652 [glib] Fix g_filename_from_utf8 signature for 64 bits platforms
Fixes https://github.com/GtkSharp/GtkSharp/issues/345
2022-04-22 15:41:14 -04:00
zii-dmg
0c5bd3f471
Fixed glib source double removal (#327)
Fixed glib source double removal then using Source.Remove (Timeout.Remove, Idle.Remove).
I don't know if fix is correct or safe, but it solves problem that you can test in TimerDemo section from samples.

Repro:
If on Windows you should enable console in samples: <OutputType>Exe</OutputType>
Go to TimerDemo section and press buttons:

1. Add timer
2. Remove timer by handler
3. GC - no error in console

1. Add timer
2. Remove timer
3. GC - error in console "GLib-CRITICAL **: 20:29:41.579: Source ID 123 was not found when attempting to remove it"
2022-01-27 21:49:10 +01:00
Andrii Kurdiumov
b9826da789
Reduce usage of Type (#323)
Replace parts of marshaller responsible for lists/arrays with
AOT-friendly logic. Use generics where possible
2022-01-26 21:15:18 +01:00
Andrii Kurdiumov
0b3795eb87
Disable loading of additional assemblies in AOT context (#314)
* Disable loading of additional assemblies in AOT context

AOT does not supports `Assembly.Load` and `Assembly.GetReferencedAssemblies()` when running AOT.
I opt-out of code which try to find type. In AOT context this means that you rely on dynamic type loading and you have issues anyway.

* Fix compilation errors
2022-01-26 17:52:54 +01:00
Harry
42ceb1c0d1
Multitarget with .net6.0 and .netstandard2.0 (#318) 2022-01-26 13:24:28 +01:00
zii-dmg
bc5674ae06
Generalized Idle and Timeout, fixed Timeout.Add (#289)
Idle.Add, Idle.AddSeconds, Timeout.Add, Timeout.AddSeconds methods overloads are generalized:
* no priority (for default priority)
* enum priority (for standard priorities)
* int priority (for custom priority)
* overloads call main method with int priority

Fixed leak in Timeout.Add(priority): method was not using userData and DestroyHelper.NotifyHandler.
2022-01-25 19:58:52 +01:00
Andrii Kurdiumov
24392d01ea Make usage of Marshal.OffsetOf AOT friendly 2021-08-15 20:27:58 +06:00
lytico
116762af89
Merge pull request #261 from kant2002/kant/nativeaot-freidnly
Make Marshal.SizeOf AOT friendly
2021-07-24 02:14:50 +02:00
Andrii Kurdiumov
64f3f78c0f Address PR feedback 2021-07-22 19:40:38 +06:00
Andrii Kurdiumov
1b73bc8042 Address PR feedback 2021-07-21 00:38:34 +06:00
Andrii Kurdiumov
2c54a7824c Update based on PR feedback 2021-07-21 00:24:49 +06:00
lytico
882140fd9d introduce IsSupported in <namespace>.Global 2021-07-19 20:13:14 +02:00
dmg
ad0420b118 Fixed GLib.Value nulls setter
Some GValue types support null value but code was not checking for .NET "null" and get null ref exception. Fixed nulls for g_value_set_variant, g_value_set_object, g_value_set_boxed as in GLib docs.

This fixes NodeView with null pixbuf column.
2021-07-17 10:22:40 +02:00
Andrii Kurdiumov
238b98b631 Make Marshal.SizeOf AOT friendly
See https://github.com/dotnet/corert/issues/5374#issuecomment-455706335
Current state in NativeAOT experiment is the same.
2021-06-13 22:24:09 +06:00
zii-dmg
e8c9a7a5e0
Fixed SList ownership 2021-06-10 21:35:54 +03:00
dmg
d34958e871 GLib.Idle.Add: use expected default priority, add priority overload 2021-05-18 23:49:59 +03:00
dmg
94ea7051f9 GException improvements with multithreading
Read all GError fields in GException constructor and free GError memory.

Quote from gtksharp2 fix: The original impl did not take into account exceptions marshalling across thread boundaries so it could end up with the error being accessed after being disposed.
2021-04-02 18:40:51 +02:00
Sergii Fesenko
9be7e092a8
Signal.Handler: correct flag check (#233) 2021-03-27 19:11:59 +01:00
Mads Kruse Johnsen
41d6f0bf28 Queue freeing of GCHandles instead of freeing them immidiately 2021-01-25 11:07:39 +01:00
Mads Kruse Johnsen
06b88bdbc5 Queue freeing of signals on the main-thread instead of on the Finalizer thread. 2021-01-25 11:07:39 +01:00
Mads Kruse Johnsen
7fb112727a Prevent double removal of timeout sources
See https://github.com/GLibSharp/GtkSharp/pull/49
2021-01-25 11:07:39 +01:00
Midhun Mohan
cd47acba85 Cleanup of sourceproxy Dictionary and its usages 2021-01-24 19:55:17 +01:00
Midhun Mohan
6af04a1058 Changing timeout_add and idle_add to _full. 2021-01-24 19:55:17 +01:00
Sebastian Dröge
89cfd16c10 Ensure to sink floating references passed unowned to GetObject() and to not increase their reference count
The API contract between GObject-Introspection and bindings is that
functions returning transfer-none floating references pass a reference
to the bindings that should be taken ownership of by sinking it. Not
doing so is wrong and will lead to memory leaks or double frees.

Previously we would not distinguish this case and simply increment the
reference count. In addition we would then sink the floating reference
when the Object.Raw field is set later for InitiallyUnowned subclasses.

Remove that last part and instead check directly in Object.Raw.set if we
get a floating reference and if so simply sink it here and take
ownership of it. The general assumption of Object.Raw.set is that it
gets passed a reference that it should take ownership of.

So in summary:
1) GetObject() would only increase the reference count of unowned,
   non-floating references so that we own it. For unowned, floating
   references it assumes ownership of the reference.
2) Raw.set assumes ownership of the reference passed to it and if it
   happens to be a floating reference then it will first sink it.

Also warn if we get a floating, owned reference passed to GetObject() as
that case is not allowed by GObject-Introspection and would cause the
reference to be leaked.

This fixes a memory leak with functions returning unowned, floating
references and with functions returning owned, non-floating references
of InitiallyUnowned subclasses. And at the same time keeps constructors
for InitiallyUnowned subclasses working correctly without leaks.

See https://gitlab.freedesktop.org/gstreamer/gstreamer-sharp/issues/31
2021-01-24 19:55:17 +01:00
Sebastian Dröge
5b63473a1c Use correct GType for GLib.InitiallyUnowned
It's not the same type as GLib.Object but a subclass thereof.
2021-01-24 19:55:17 +01:00
Thibault Saunier
1b9fe6a8ed Revert "Attempt minimal changes to obtain proper disposing."
This reverts commit 2e1882d31e.
2021-01-24 19:55:17 +01:00
Olivier Crête
a7d3e85829 ValueArray: Create copy when receiving pointer
The "ref" operation of GValueArray is a copy, so we don't have a
choice.
2021-01-24 19:55:17 +01:00
Thibault Saunier
dd8f3f994e glib: Handle GValue containing GType 2021-01-24 19:55:17 +01:00
Justin Kim
c980ef4f90 Object: Fix string leakages 2021-01-24 19:55:17 +01:00
Harry
724df41249
Revert "Sign the DLL files" 2020-08-07 13:30:09 +02:00
Harry
3b90cbf9f2
Merge pull request #139 from ermshiperete/sign
Sign the DLL files
2020-06-29 10:37:01 +02:00
Alex Dircksen
ed414df9f2 Handle NULL in GLib.Value -> GLib.Variant cast operator 2020-04-26 21:24:31 +02:00
lytico
c6cfc9d58c AbiStructExtension.BaseOverride: introduce an Extension to find the first overriden method in a base-class, even if a overriden class doesn't override the base class & change to GapiCodegen to use this extension 2020-04-06 22:31:10 +02:00
Mikkel Kruse Johnsen
ed68eeadfd
Sign the DLL files 2020-03-02 16:46:24 +01:00
cra0zy
e9f1f3628d Improve library loading code 2019-11-04 21:02:36 +01:00
Mikhail Kanygin
42a0e01775 Fixtures: added UnmanagedFunctionPointer to whole delegate calls collection to prevent stack incosistence exception for x86 apllications on windows. 2019-11-04 20:12:50 +01:00
cra0zy
377a1abfc4 Revert "Project files"
This reverts commit 32fdca5754.
2019-08-10 17:02:18 +02:00
Mads Kruse Johnsen
99960543b1 Null check 2019-08-10 15:58:34 +02:00
Mads Kruse Johnsen
2e1882d31e Attempt minimal changes to obtain proper disposing. 2019-08-10 15:58:34 +02:00
Mads Kruse Johnsen
32fdca5754 Project files 2019-08-10 15:58:34 +02:00
Mikkel Kruse Johnsen
9764260931 Free all internal signals, else the garbage collector is not able to free the object. 2019-01-08 11:39:25 +01:00
miegir
93deaa1219
fix type initialization error in VariantType
Move public static fields below function pointers on which they depend
2018-11-05 22:42:54 +03:00
Harry
553b59abb8
Revert "Fix a null reference exception" 2018-03-01 17:02:25 +01:00
cra0zy
186b1ce72b Fix a null reference exception 2018-03-01 15:04:08 +01:00
cra0zy
26ef5bad3e
Fix file permissions, how did this happen? 2018-02-26 23:03:31 +01:00
cra0zy
7952f969cf Remove unused info from GLib api file 2018-01-22 02:45:30 +01:00
cra0zy
411cdfd502 Safeload static functions as well 2018-01-18 22:54:45 +01:00
cra0zy
3f0810c93a Split out FuncLoader into multiple files 2018-01-18 20:41:31 +01:00
cra0zy
543a29569b Replace DllImport with a better multiplatform solution 2018-01-18 20:41:03 +01:00