Skip to content

Fixes for API exports - #2039

Open
darbyjohnston wants to merge 1 commit into
AcademySoftwareFoundation:mainfrom
darbyjohnston:windows-shared-exports
Open

darbyjohnston wants to merge 1 commit into
AcademySoftwareFoundation:mainfrom
darbyjohnston:windows-shared-exports

Conversation

@darbyjohnston

@darbyjohnston darbyjohnston commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

This PR has various fixes for the API exports:

  • Change OTIO_EXPORTS and OPENTIME_EXPORTS to PRIVATE
  • Add missing exports
  • Remove the exports from templates which are inlined
  • Add missing includes

Assisted-by: Claude:claude-opus-5 [debugging]

@codecov-commenter

codecov-commenter commented Sep 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.47%. Comparing base (bc5fe2d) to head (a8b3015).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #2039      +/-   ##
==========================================
+ Coverage   83.25%   83.47%   +0.21%     
==========================================
  Files         180      182       +2     
  Lines       13479    13517      +38     
  Branches     1253     1254       +1     
==========================================
+ Hits        11222    11283      +61     
+ Misses       2085     2061      -24     
- Partials      172      173       +1     
Flag Coverage Δ
py-unittests 83.47% <ø> (+0.21%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/opentimelineio/color.h 66.66% <ø> (ø)
src/opentimelineio/composition.h 82.75% <ø> (ø)
src/opentimelineio/deserialization.cpp 62.88% <ø> (ø)
src/opentimelineio/imageSequenceReference.h 56.52% <ø> (ø)
src/opentimelineio/serializableCollection.h 75.00% <ø> (ø)
src/opentimelineio/serializableObject.h 83.78% <ø> (ø)
...rc/opentimelineio/serializableObjectWithMetadata.h 100.00% <ø> (ø)
src/opentimelineio/stringUtils.cpp 54.54% <ø> (ø)
src/opentimelineio/timeline.h 83.33% <ø> (ø)
src/opentimelineio/transition.h 100.00% <ø> (ø)
... and 1 more

... and 1 file with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 31e3101...a8b3015. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

OTIO_EXPORTS and OPENTIME_EXPORTS were PUBLIC, so everything consuming
OTIO compiled its API as dllexport where it has to be dllimport. They
become PRIVATE, which says the library is being built rather than
consumed; the OTIO_STATIC and OPENTIME_STATIC definitions stay PUBLIC,
since a consumer does have to know the API carries no declspec at all.

With that corrected the members marked only at the class level came up
missing, 74 of them, the Color statics and TypeRegistry among them:
OTIO_API_TYPE is empty on Windows, where only the per-member OTIO_API
carries the declspec. Those members are marked.

The three find_children templates lose OTIO_API in turn, a template
defined in a header being something that cannot be imported, and two
source files that define exported functions without including the
header that marks them are given the include.

No change to what either library exports on macOS or Linux: the
symbol tables of a shared build are identical before and after.

Signed-off-by: Darby Johnston <darbyjohnston@yahoo.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants