Monday, June 18, 2018

Linux Window Bug Still Exists

Date: 6/18/2018

Author: Tyler Murray

The previous week, I been trying to fix a bug on Linux side that existed before the day I started Gateware. The bug is that the user will have to click on/off the windows generated to have the application proceed through the unit tests. During this week I managed to fix a lot of these hangs, now all that remains to one hang spot. By removing XFlushs & XSyncs it no longer wipes the events in the queue of the server side. Which caused some of the hangs since the xlib functions we were using required a reply by the server and if the server was wiped then it never knows about needing to send a reply. Secondly I had to go through and place XLockDisplay/XUnlockDisplay functions in GWindow & GOpenGLSurface since you need to make sure the display AKA the server connection doesn't get altered while functions that use the display are being used. Otherwise the application will hang since the display was changed/altered/being used else where when it reaches a display function.
But if you place these Locks and Unlocks our GListeners and Linux's Event system won't work properly. Removing the locks/unlocks the event systems + GListeners work but reintroduces the hangs. I have to do more research to find either another solution or a way have these locks/unlocks and have the event system to still be responsive.

This week, I have to start writing documentation, such as "The Release Process", "Windows Memory Leak Detection", Mac Memory Leak Detection", Linux Memory Leak Detection", ".GitKraken Tips", and any other documentation needed to be created as the week progresses. After I finish the documentation and the Presentation, I will like to go back a try to solve this bug before I leave.

Monday, June 11, 2018

Fixing Linux GWindow bugs related to xlib API

Date: 6/11/2018

Author Tyler Murray

The previous week, I implemented the feature of getting the last event that was called in GWindow. Now do to a known bug in Linux that requires the user to maximize, minimize, click on windows to progress through the unit tests. This bug will affect the testing of the GetLastEvent unit tests since touching the windows will interrupt what event was last called. During this week I read up on xlib and figured out that the functions we were using to get the width, height, top-left of the window need to wait for a replay by the server. (xlib API system works like a client-server relationship).

This week I'll continue reading the xlib book and look into Properties. The previous developer worked with Properties to determine the events that need to be called, So if I can read up on this and understand his code I can maybe change these existing functions by changing and reading from the properties instead of calling the functions that hang up the system,

Monday, June 4, 2018

All Memory Leaks Crushed and the Start of a new Feature

Date: 6/4/2018

Author: Tyler Murray

In the previous week I was successful in getting all the memory leak clean on Linux side, thus being the last piece in the puzzle for cleaning all the memory leaks. Release R4F is now out for user use that not only contain memory leak fixes, but many GAudio bug fixes too. After this my next task is to add a simple feature where the user can call a function "GetLastEvent" to get the last event that was called by the winproc() and be able to use this function to determine the states for the window.

My goal/plan for this week is to finish this feature and have it work on all platforms, then preform a release. Currently i'm running into a bug where the Maximize and Resize events will only be called if certain conditions are met. For an example if you minimize then maximize you would think the last event would be "Maximize" but its "Resize". To get the Maximize event after you call minimize you will then have to change the window style to Windowed Boarder then call maximize. I hope I can fix this problem without needing to follow these conditions. If I can get finished on Windows it will be a nice base to go by when working on Linux since it has a similar function like Windows that runs like winproc(). Mac side maybe another story, needing to do more research on that.