N.B. I have removed the original Stack Overflow question, and created a new
question with this new information:

http://stackoverflow.com/questions/41986105/idirect3d9createdevice-prevents-gtk-2-cairo-rendering

On 1 February 2017 at 17:10, Jeffrey Sheen <
jeffrey.shee...@alumni.imperial.ac.uk> wrote:

> 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.sheen00@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