After trying different VS 2015 Solution configurations (and abundant
breakpointing), I have established that it is not the .EXE->.LIB->Cairo API
call structure that is breaking Cairo surface rendering in my project.

The black test square can be rendered before, but not directly after, this
D3D9 API call:

Direct3DCreate9(D3D_SDK_VERSION)->CreateDevice( D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL, WindowHandle, D3DCREATE_HARDWARE_VERTEXPROCESSING,
&PresentParameters, &PDevice);

N.B. The object parameters are as follows:

WindowHandle 0x001b07f8 {unused=13111204 } HWND__ *
unused 13111204 int

PresentParameters {BackBufferWidth=0 BackBufferHeight=0
BackBufferFormat=D3DFMT_UNKNOWN (0) ...} _D3DPRESENT_PARAMETERS_
BackBufferWidth 0 unsigned int
BackBufferHeight 0 unsigned int
BackBufferFormat D3DFMT_UNKNOWN (0) _D3DFORMAT
BackBufferCount 1 unsigned int
MultiSampleType D3DMULTISAMPLE_NONE (0) _D3DMULTISAMPLE_TYPE
MultiSampleQuality 0 unsigned long
SwapEffect D3DSWAPEFFECT_DISCARD (1) _D3DSWAPEFFECT
+ hDeviceWindow 0x001b07f8 {unused=13111204 } HWND__ *
Windowed 1 int
EnableAutoDepthStencil 0 int
AutoDepthStencilFormat D3DFMT_UNKNOWN (0) _D3DFORMAT
Flags 1 unsigned long
FullScreen_RefreshRateInHz 0 unsigned int
PresentationInterval 0 unsigned int

PDevice 0x00000000 <NULL> IDirect3DDevice9 *
+ IUnknown <struct at NULL> IUnknown

As a reminder, the code for rendering the black test square is as below,
and the status of each Cairo API call returns "no error has occurred":


cairo_surface_t *surface;

cairo_t *cr;
cairo_status_t status;

surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 390, 60);
status = cairo_surface_status(surface);

cr = cairo_create(surface);
status = cairo_status(cr);

cairo_set_source_rgba(cr, 0, 0, 0, 1);
status = cairo_status(cr);

cairo_rectangle(cr, 175, 10, 40, 40);
status = cairo_status(cr);

cairo_fill(cr);
status = cairo_status(cr);

cairo_surface_flush(surface);
status = cairo_surface_write_to_png(surface,
"f:\\cairo_test_pos_lib_member_function.png");

cairo_destroy(cr);
cairo_surface_destroy(surface);

Can anyone suggest how to proceed from here?

Cheers,

Jeff.

On 27 January 2017 at 11:07, Jeffrey Sheen <
jeffrey.shee...@alumni.imperial.ac.uk> wrote:

> Thanks for taking a look Eric.
>
> The status value after all of the Cairo API calls are all "no error has
> occurred", in both the EXE implementation and LIB implementation, so no
> information there.
>
> I noticed this output during the execution of the EXE:
>
> 'Loaded 
> 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_win32\bin\libcairo-2.dll'.
> Module was built without symbols.
> 'Loaded 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_
> win32\bin\libfontconfig-1.dll'. Module was built without symbols.
> 'Loaded 
> 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_win32\bin\libexpat-1.dll'.
> Module was built without symbols.
> 'Loaded 
> 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_win32\bin\freetype6.dll'.
> Module was built without symbols.
> 'Loaded 
> 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_win32\bin\libpng14-14.dll'.
> Module was built without symbols.
> 'Loaded 
> 'F:\filestore\development\gtk+\gtk+-bundle_2.24.10-20120208_win32\bin\zlib1.dll'.
> Module was built without symbols.
>
> Only the GTK+ DLL files are reported as missing symbols, where others have
> theirs loaded. Is it possible that the dynamic linkage is broken for API
> calls made from the static LIB because of this?
>
> On 26 January 2017 at 18:47, <cecas...@aol.com> wrote:
>
>>
>> Hi Jeffrey,
>>
>> I am probably not much help here. Your code works on Ubuntu16.04 and
>> GTK2.24.30. It does seem strange that there isn't an error popping up
>> someplace. Have you tried getting the status of that function to see if it
>> returns an error?
>>
>>     cairo_status_t status;
>>     status=cairo_surface_write_to_png(surface, test_dir);
>>     g_print("%s\n", cairo_status_to_string(status));
>>
>> Maybe it might offer a clue to what is going on.
>>
>> Eric
>>
>>
>>
>
_______________________________________________
gtk-list mailing list
gtk-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to